apache配置中的ThreadsPerChild\MaxRequestsPerChild\Win32DisableAcceptEx

【记录】公司的服务器近期不怎么稳定,五一假期都没消停。在排除硬件、软件问题后,开始检查apache配置问题。

win2003系统下apache环境,mpm_winnt.c模式,优化参数:

ThreadsPerChild 说明:每个子进程建立的线程数,默认值:64,最大值:1920。网上查询资料建议设置在100-500之间。如服务器性能高,可设置更大值。

MaxRequestsPerChild 说明:每个子进程在其生存期内允许伺服的最大请求数量,也就是最大线程。如果超过限制,子进程会结束。默认值:0。
MaxRequestsPerChild的值不能设置为0,会因子进程不结束而耗尽内存。
线程设置也不是越大越好,太大会导致产生新的子进程后长期空闲,并非最佳优化。要根据服务器的硬件配置、系统环境、访问流量等调试设置。
如果值太小,也会造成apache频繁重启性能降低,在日志中会出现这样的提示:

Process exiting because it reached MaxRequestsPerChild. Signaling the parent

Win32DisableAcceptEx
使用accept()代替AcceptEx()接受网络链接。AcceptEx()是一个微软的WinSock2 API ,通过使用BSD风格的accept() API提供了性能改善。一些流行的Windows产品,比如防病毒软件或虚拟专用网络软件,会干扰AcceptEx()的正确操作。

优化后目前还比较稳定,做个记录继续观察。



发表评论

电子邮件地址不会被公开。 必填项已用*标注