请问春哥对于那种重型耗时的计算是不是会提供一个线程池来把它们收纳了?
On Friday, October 16, 2015 at 1:18:10 PM UTC+8, agentzh wrote:
Hello!
2015-10-16 10:27 GMT+08:00 熊云昆:
> 你好,目前我这里碰到一个关于nginx_lua内存的问题,目前我们的项目是基于nginx加上了nginx_lua_module上开发的,现在的问题是这样的:
> 我们通过nginx_lua来执行周期性的数据统计功能,每次执行是通过发起一个request请求,这个统计的功能的时候执行时间会比较长,大概会有20多分钟,并且CPU消耗也大,同时要频繁的访问mysql进行数据统计,受制于nginx的内存池的分配方式,通过top指令查看单个nginx进程所占用内存达到了1G左右,而且随着执行次数的增加会有缓慢增加,并且不会释放只能通过nginx
> reload方式重载才会释放,通过了解你开放了一个no-pool-nginx模块是不采用内存池方式的,在我这种执行统计功能的情况中改用你这种模块内存能不能占用应该能小一点吧?
> 针对我这种一个request请求执行时间长,并且cpu消耗大的场景,使用nginx_lua,还有没有其他的优化建议呢?
多谢你的报告。
是的,ngx_lua 的 cosocket API 会在 nginx 的请求内存池中分配内存,对于非常长的时间密集运行的 cosocket
对象,会存在在该 cosocket 的生命期内,nginx 内存不断增长的风险。我会在近期(未来一二个月内)着重解决这个问题,敬请关注
openresty 中文邮件列表:https://openresty.org/#Community
多谢你对该项目的信任与支持!
Regards,
-agentzh
P.S. 同时抄送给 openresty 中文邮件列表。