Windows下Apache模块配置 mpm_winnt_module

关于Apache的并发模型以及如何在Linux下优化并发的配置,我在前面的文章已提到apache的工作模式和最大并发请求数设置 和 apache服务器的三种mpm模式介绍_prefork_worker和event。这篇来讲下Windows下Apache的并发模块 mpm_winnt_module。

Windows下Apache的运行模块一般为winnt,是专门针对Windows NT优化的MPM(多路处理模块),它使用一个单独的父进程产生一个单独的子进程,在这个子进程中轮流产生多个线程来处理请求。也就是说 mpm_winnt只能启动父子两个进程, 不能像Linux下那样同时启动多个进程。以下为默认配置:

  • ThreadsPerChild:constant number of worker threads in the server process。线程数量。一般来说线程数量越大,能够更好的处理更多并发连接。
  • MaxConnectionsPerChild:maximum number of connections a server process serves。累计最多处理到多少个请求,超过该值会自动重启Apache。设置为0,则不限制,但是有可能会照成内存泄漏。
  • MaxMemFree:MaxMemFree指令用于设置主内存分配程序在未调用free()的情况下允许持有的最大自由内存数量(KB)。若未设置或设置为”0″,将表示无限制。 MaxMemFree的默认值为2048。一般不需要配置。

可能的错误

Apache出现以下日志:

指定的网络名不再可用。 : winnt_accept: Asynchronous AcceptEx failed.

需要加上配置:

Win32DisableAcceptEx

AcceptEx()是一个微软的WinSock2 API ,通过使用BSD风格的accept() API提供了性能改善。一些流行的Windows产品,比如防病毒软件或虚拟专用网络软件,会干扰AcceptEx()的正确操作。如果你遇到类似于如下 的错误:一般的解决办法是关闭 AcceptEx()。

 

转自https://blog.csdn.net/osfipin/article/details/50527165


发表评论

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