Hello!
2016-10-14 5:30 GMT-07:00 winding lee:
> 我用如下代码 建立了一个websocket server
> 但是 如果连接数达到万级,并全部断开连接,所有申请的内存,并不释放,如果再连,内存持续增长,直到将服务器内存耗尽为止,不知道为何?
> 有和我遇到相同问题的人吗?
> 用的openresty-1.11.2.1 ,即便强制lua回收内存,内存也不下降多少。
> 另外 nginx-push-stream-module 配合 openresty使用 同样也存在内存耗尽,不会回收的问题。
> 我应该怎么查?
>
建议把你的 openresty 里面的 lua-nginx-module 升级到 github 仓库里 master
分支上的最新版本。然后在 nginx.conf 里面配置
lua_malloc_trim 1;
用于测试。生产上不建议使用 1 这么小的数字。但测试时,为了效果明显,用 1 比较清楚。
我估计是因为你使用的 glibc 自己缓存了很多由应用释放掉的内存块,而没有把这些内存及时归还给操作系统。
你可以用上面讲的方法确认一下。
Regards,
-agentzh