補充資訊:這個方法是專門針對將 apache 架在 Windows 系列上的伺服器。
以下是轉貼來的資訊:
所謂Apache出現CPU高佔用率就是指Apache在一段時間內持續佔用很高的CPU使用率,甚至達到CPU100%,這個時候造成網站無法訪問。解決的方法就是仔細觀察Apache的日誌檔案,查閱錯誤的資訊。
下面我們針對幾種錯誤資訊進行分析並給出解決的方法:
Apache官方提供的手冊中提到,在Windows系統下Apache2.x為了提高性能而使用了Microsoft WinSock v2 API,但是一些常見的防火牆軟體會破壞他的正確性,從而使得Apache出現死循環操作造成CPU100%。
其錯誤提示如下所示:
[error] (730038)An operation was attempted on something that is not a socket.: winnt_accept: AcceptEx failed. Attempting to recover.
[error] (OS 10038) : Child 3356: Encountered too many errors accepting client connections. Possible causes: dynamic address renewal, or incompatible VPN or firewall software. Try using the Win32DisableAcceptEx directive.
[warn] (OS 121)信號燈超時時間已到。 : winnt_accept: Asynchronous AcceptEx failed.
[warn] (OS 64)指定的網絡名不再可用。 : winnt_accept: Asynchronous AcceptEx failed.
可以依次採用下面的方法來解決上面的問題,如果進行了一步還有問題就繼續下一步:
1) 在httpd.conf檔案中使用 Win32DisableAcceptEx 禁止Apache使用 Microsoft WinSock v2 API :
<IfModule mpm_winnt.c> Win32DisableAcceptEx # 禁止使用AcceptEx() </IfModule> |