數碼中文坊

 取回密碼
 我要註冊
檢視: 15232|回覆: 2

[分享] 解決 apache 2.x 佔用 CPU 100%

[複製連結]
發表於 2008-8-22 00:53:55 | 顯示全部樓層 |閱讀模式

馬上註冊,結交更多好友,享用更多功能,讓你輕鬆瀏覽論壇。

你需要 登入 才可以下載或檢視,沒有帳號?我要註冊

x

網站伺服器採用 apache2,經常佔用 CPU 資源達到 100%,困擾了很久,最近終於找到解決的辦法:

 

在 httpd.conf 文件中加入 Win32DisableAcceptEx

 

ThreadsPerChild 250
MaxRequestsPerChild  0
Win32DisableAcceptEx #在這行加上 Win32DisableAcceptEx 即可


相關資訊:http://httpd.apache.org/docs-2.0/mod/mpm_winnt.html

發表於 2008-8-22 08:36:48 | 顯示全部樓層

資訊收到

馬上更新

謝謝

 樓主| 發表於 2008-8-22 09:05:36 | 顯示全部樓層

補充資訊:這個方法是專門針對將 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>

你需要登入後才可以回覆 登入 | 我要註冊

本版積分規則

Archiver|禁閉室|手機版|數碼中文坊

GMT+8, 2024-5-2 09:59 PM

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回覆 返回頂端 返回清單