现在的位置: 首页 > 综合 > 正文

APACHE进程达到一定内存后就会自动结束并创建一个新进程的原因

2014年10月05日 ⁄ 综合 ⁄ 共 448字 ⁄ 字号 评论关闭

现象:我发现我的Apache每当因有较多工作要做的程序长时间执行后会增长到800MB左右,然后就自动杀死重开了一个进程,导致永远都执行不了这个程序。

原因:APACHE配置文件中的MaxRequestsPerChild导致的。它设置每个子进程在其生存期内允许伺服的最大连接请求数量,到达MaxRequestsPerChild的限制后,子进程将会结束。之所以用这个参数, 因为它可以阻止(偶然的)内存泄漏无限进行而耗尽内存。比如我的程序就是因为超长时间查询数据库,导致其它连接请求得不到MYSQL服务而等待,越积越多。

解决:临时将MaxRequestsPerChild调到足够大或设为0(无限)后重启APACHE,程序执行完后再调回来并重启。其实,这个参数应该根据服务器实际的资源来设置大小,太小则发挥不了服务器的性能,但32位的WIN服务器有个问题,即使是用最高级的数据中心版操作系统,同一时刻好像仍然最大只能支持4G的寻址空间,甚至有可能在去除系统核心所用的内存后,单个程序能用的内存只有2G不到!

抱歉!评论已关闭.