3
我们在从nginx更换到tengine时遇到了一个问题,在使用nginx时我们使用lua开发了一部分功能,使用lua.shared.DICT将$remote_addr装入内存,在更换tengine后发现使用同样128m大小的内存,却装不下原来的数据量。 原nginx版本:1.13.2 tengine版本:2.2.2 ngx_devel_kit版本:0.3.0 lua-nginx-module版本:0.10.13
我们在从nginx更换到tengine时遇到了一个问题,在使用nginx时我们使用lua开发了一部分功能,使用lua.shared.DICT将$remote_addr装入内存,在更换tengine后发现使用同样128m大小的内存,却装不下原来的数据量。 原nginx版本:1.13.2 tengine版本:2.2.2 ngx_devel_kit版本:0.3.0 lua-nginx-module版本:0.10.13
却装不下原来的数据量。
这个信息具体指什么?(如有报错可以提供)
@chobits 是这样,我们在nginx上用lua开发了些功能,下面是代码片段和nginx配置
lua_shared_dict ip_whitelist 64m;
local res, err, errcode, sqlstate = db:query("select ip from ip_white")
if not err then
ip_whitelist:flush_all()
if #res > 0 then
for k,v in pairs(res) do
ip_whitelist:set(v.ip,0)
end
end
ngx.say("ok"
else
ngx.say("ip_whitelist sql err")
end
ip_white表的数据量大概31w条,这个运行的一直很好,已经稳定运行了一年,现在我们想将nginx更换成tengine2.2.2,更换后发现这段程序有问题了,ip_whitelist在存储了1.6w左右的数据就满了,但是它在nginx下仍然运行的很好
你可以尝试使用当前最新版本Tengine-2.3.0 or Tengine-2.3.1. 之前老版本Tengine有一处slab初始化逻辑漏掉了。可能会导致每次占用的内存比较多。