例如,apache httpd提供了一个指令MaxConnectionsPerChild,它通过杀死旧的进程并启动新进程来控制服务器回收进程的频率。
在提供一定数量的连接后,根本杀死旧线程的原因是什么。
这里不适用热门缓存吗?
答案 0 :(得分:1)
来自the docs:
将MaxConnectionsPerChild设置为非零值可限制金额 进程可能因(意外)内存泄漏而消耗的内存。
因此,如果每个请求(malloc()
而不是free()
)泄漏1 MB,您将逐渐耗尽越来越多的内存,直到用完为止并且apache被杀死。但是如果设置MaxConnectionsPerChild 100
,孩子将逐渐使用最多100 MB的内存,然后被杀死并返回到0。
这里适用“热缓存”的东西,设置MaxConnectionsPerChild会减慢apache的速度。这就是默认是无限的原因。 MaxConnectionsPerChild意味着内存泄漏的优雅管道磁带。一个有时间压力的程序员可能更愿意花1分钟设置MaxConnectionsPerChild,而不是花1周的时间来搜索malloc()。