hello
tengine2.1.2 +ngx_lua0.6 +luajit.20
为了搞ssl sessionID复用,之前是用的主备redis,官方的redis client。线上100+台nginx去连主备,虽说有很多超时的,但不影响整体运行,ssl复用率提高了近10倍。
后来为了缓解redis的压力,准备切到cluster上,在线上用了rediscluster的客户端模块,用的是github上的:https://github.com/cuiweixie/lua-resty-redis-cluster
问题是:在流量不大的情况下,也能够达到很好的复用效果,但在线上高并发的情况下,发生了问题:
2017/03/07 15:46:18 [crit] 3055#0: ngx_slab_alloc() failed: no memory
275933 2017/03/07 15:46:18 [crit] 2943#0: ngx_slab_alloc() failed: no memory
275934 2017/03/07 15:46:18 [crit] 3033#0: ngx_slab_alloc() failed: no memory
进而导致worker 挂掉了。
这个问题不是太好复现,我在本地压测时也不一定复现。
所以很怀疑是这个rediscluster的问题,是否在lua中有内存泄漏的问题呢?看样子是把lua虚拟栈爆掉了。
有没有那种检测内存泄漏的工具呀~在openresty-systemp-toolkit中。
火焰图貌似也定位不了这个问题。。。
求教~~