mpm_winnt
描述: | 为Windows NT优化的多处理模块。 |
---|---|
状态: | MPM |
模块标识符: | mpm_winnt_module |
源文件: | mpm_winnt.c |
摘要
该多处理模块(MPM)是Windows NT操作系统的默认设置。它使用单个控制进程来启动单个子进程,该子进程进而创建线程来处理请求
使用ThreadsPerChild
指令配置容量,该指令设置并发客户端连接的最大数量。
默认情况下,该MPM使用高级Windows API来接受新的客户端连接。在某些配置中,第三方产品可能会干扰此实现,并在Web服务器日志中写入以下消息:
Child: Encountered too many AcceptEx faults accepting client connections. winnt_mpm: falling back to 'AcceptFilter none'.
MPM可以使用更安全的实现,但是某些客户端请求未得到正确处理。为了避免此错误,请AcceptFilter
与accept filter一起使用none
。
AcceptFilter http none AcceptFilter https none
在Apache httpd 2.0和2.2 Win32DisableAcceptEx
中用于此目的。
WinNT MPM在某些方面与Unix MPM(例如worker和event)有所不同:
- 由于关闭,重新启动或导致子进程退出
MaxConnectionsPerChild
时,退出进程中的活动请求需要TimeOut
几秒钟才能完成,然后中止处理。未实现其他类型的重新启动和关闭。 - 新的子进程读取配置文件,而不是从父进程继承配置。如果子进程是在启动或重新启动时创建的,则该行为与Unix上的行为相同,但是如果子进程是由于先前的进程崩溃或到达而创建的
MaxConnectionsPerChild
,则此时任何对配置的未决更改将在子进程中变为活动状态,并且父级和子级将使用其他配置。如果部分实施了计划的配置更改,并且无法解析当前配置,则替换子进程无法启动,服务器将停止。由于这种现象,在服务器重新启动之前,不应更改配置文件。 - 在
monitor
和fatal_exception
钩子目前不能实现。 AcceptFilter
在MPM中实现,并且对新连接的处理具有不同类型的控制。(AcceptFilter
有关详细信息,请参阅文档。)