tengine lua.shared.DICT问题

p1tboqfb  于 4个月前  发布在  其他
关注(0)|答案(3)|浏览(109)

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

ybzsozfc

ybzsozfc1#

却装不下原来的数据量。

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

dxxyhpgq

dxxyhpgq2#

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

p8ekf7hl

p8ekf7hl3#

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

相关问题