分类: Windows
Apache中 Win32DisableAcceptEx 与MaxRequestsPerChild及参数设置

Win系统下apache环境,mpm_winnt.c模式,优化参数:
ThreadsPerChild 说明:每个子进程建立的线程数,默认值:64,最大值:1920。网上查询资料建议设置在100-500之间。如服务器性能高,可设置更大值。
MaxRequestsPerChild 说明:每个子进程在其生存期内允许伺服的最大请求数量,也就是最大线程。如果超过限制,子进程会结束。默认值:0。
推荐MaxRequestsPerChild不要设置为0,设置为非0,可以保护Apache进程免遭内存泄漏的影响,因为你不知道运行在Apache上的应用程式在什么时候会出错导致内存泄漏。

线程设置也不是越大越好,太大会导致产生新的子进程后长期空闲,并非最佳优化。要根据服务器的硬件配置、系统环境、访问流量等调试设置。
如果值太小,也会造成apache频繁重启性能降低,在日志中会出现这样的提示:

Process exiting because it reached MaxRequestsPerChild. Signaling the parent
Win32DisableAcceptEx

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

[warn] (OS 64)指定的网络名不再可用。 : winnt_accept: Asynchronous AcceptEx failed.
可以直接禁用AcceptEx,重启 Apache

<IfModule mpm_winnt.c>
  Win32DisableAcceptEx
  ......
</IfModule>


相关博文:

发表新评论