Lua Tarantool应用程序内存限制
你好 我是塔兰托的新手,我有一个关于塔兰托内部客户端应用程序内存限制的问题 我有一个内存中的数据库,用于存储3亿个项目,lua应用程序选择了其中的一部分,在选择之后,我将结果包装到“类”中,以便从代码中进行更简单的交互。例如: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
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] 链接:
PANIC: unprotected error in call to Lua API (not enough memory)