[alibaba/tengine]lua.shared.DICT问题

2024-06-26 965 views
9

我们在从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

回答

7
却装不下原来的数据量。

这个信息具体指什么?(如有报错可以提供)

3

@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下仍然运行的很好

5

你可以尝试使用当前最新版本Tengine-2.3.0 or Tengine-2.3.1. 之前老版本Tengine有一处slab初始化逻辑漏掉了。可能会导致每次占用的内存比较多。