Lua Tarantool应用程序内存限制

Lua Tarantool应用程序内存限制,lua,tarantool,Lua,Tarantool,你好 我是塔兰托的新手,我有一个关于塔兰托内部客户端应用程序内存限制的问题 我有一个内存中的数据库,用于存储3亿个项目,lua应用程序选择了其中的一部分,在选择之后,我将结果包装到“类”中,以便从代码中进行更简单的交互。例如: Foo = {} Foo.__index = Foo function Foo.create(rawData) local self = setmetatable({}, Foo) self.PrimaryId = rawData[1] sel

你好 我是塔兰托的新手,我有一个关于塔兰托内部客户端应用程序内存限制的问题 我有一个内存中的数据库,用于存储3亿个项目,lua应用程序选择了其中的一部分,在选择之后,我将结果包装到“类”中,以便从代码中进行更简单的交互。例如:

Foo = {}
Foo.__index = Foo

function Foo.create(rawData)
    local self = setmetatable({}, Foo)

    self.PrimaryId = rawData[1]
    self.BarId     = rawData[2]

    local fields = rawData[3]
    self.Name    = fields[1]
    self.Date    = fields[2]

    return self
end
使用方法:

local data = box.space.Foo.index.barId:select({barId})
local ctor = Foo.create
local foo = {}

for i = 1, #data do
    table.insert(foo, ctor(data[i]))
end
在大多数情况下,它在第一次运行时运行成功,但在第二次运行时,它以100%的概率失败,并显示消息(tarantool消息):


我知道,内存使用(非释放内存)存在问题,但我对限制有疑问——lua应用程序是否有一些限制?因为我在monitor中看到内存消耗,并注意到有足够的可用内存,并且在应用程序开始使用超过1.2 Gb时出现故障,Tarantool使用luajit,这意味着限制来自luajit[1]

此外,luajit(如lua)与垃圾收集器[2]存在问题,有时您必须手动调用它[3],否则会出现“OOM恐慌”

[1] 链接:

[2]

[3]

PANIC: unprotected error in call to Lua API (not enough memory)