Waiting 180 more seconds for 1 worker threads to finish
Apache 的各種報錯及配置優化 ?
事件類型: 錯誤
事件來源: Application Error
事件種類: (100)
事件 ID: 1000
日期: ? 2010-1-28
事件: ? 14:18:53
用戶: ? N/A
計算機: WEBSERVER
描述:
錯誤應用程序 Apache.exe,版本 2.0.54.0,錯誤模塊 libhttpd.dll,版本 2.0.59.200,錯誤地址 0x0001c022。
Waiting 150 more seconds for 1 worker threads to finish.
[Fri Mar 06 16:02:47 2009] [notice] Child 1836: Waiting 180 more seconds for 1 worker threads to finish.
[Fri Mar 06 16:03:20 2009] [notice] Child 1836: Waiting 150 more seconds for 1 worker threads to finish.
上面錯誤中的數字1有可能是其他數字,造成這個錯誤的原因是Apache在關閉并發線程的時候出現線程溢出,從而造成內存泄露,表現出來的就是Apache所占用的系統資源持續增長。
具體來說,Apache的子進程在結束當前請求之前會首先將所有的并發線程進行關閉,在關閉的時候會等待3分鐘,如果3分鐘之內沒有將所有的線程關 閉則會拋出上述的錯誤提示,然后強制關閉。
這樣就造成了內存溢出,時間一長會使得Apache所占用資源持續增長直到無法工作。這個時候可以適當將MaxRequestsPerChild的值降低,使得Apache子進程所并發的線程數量減少,從而降低該錯誤出現的幾率。
但是這種方式并不能徹底解決問題,幸好Apache2.0.x的最新版本(2.0.63)解決了之前版本的這個問題,如果3分鐘之內有線程沒有關閉的話會自動根據時間情況再增加等待結束的時間直到最終將所有的線程結束。
mpm_winnt.c是專門針對Windows NT優化的MPM(多路處理模塊),它使用一個單獨的父進程產生一個單獨的子進程,在這個子進程中輪流產生多個線程來處理請求。也就是說mpm_winnt只能啟動父子兩個進程, 不能像Linux下那樣同時啟動多個進程。
1:ThreadsPerChild
這個參數用于設置每個進程的線程數, 子進程在啟動時建立這些線程后就不再建立新的線程了. 一方面因為mpm_winnt不能啟動多個進程, 所以這個數值要足夠大,以便可以處理可能的請求高峰; 另一方面該參數以服務器的響應速度為準的, 數目太大的反而會變慢。因此需要綜合均衡一個合理的數值。
mpm_winnt上的默認值是64, 最大值是1920. 這里建議設置為100-500之間,服務器性能高的話值大一些,反之值小一些。
2:MaxRequestsPerChild
該參數表示每個子進程能夠處理的最大請求數, 即同時間內子進程數目.設置為零表示不限制, mpm_winnt上的默認值就是0.
官方參考手冊中不建議設置為0, 主要基于兩點考慮: (1) 可以防止(偶然的)內存泄漏無限進行,從而耗盡內存; (2) 給進程一個有限壽命,從而有助于當服務器負載減輕的時候減少活動進程的數量。
因此這個參數的值更大程度上取決于服務器的內存,如果內存比較大的話可以設置為0或很大的數字,否則設置一個小的數值。需要說明的是,如果這個值設置的太小的話會造成Apache頻繁重啟,在日志文件中會看到如下的文字:
Process exiting because it reached MaxRequestsPerChild. Signaling the parent
這樣一來反而降低了Apache的總體性能。
3:參考設置:
<IfModule mpm_winnt.c>
?ThreadsPerChild 250
?MaxRequestsPerChild 5000
</IfModule>
2003的報錯:
錯誤應用程序 Apache.exe,版本 2.0.63.200,錯誤模塊 libhttpd.dll,版本 2.0.63.200,錯誤地址 0x0001c0a2
apache的報錯:
[Sat Mar 07 16:10:26 2009] [notice] Parent: Received restart signal -- Restarting the server.
[Sat Mar 07 16:10:26 2009] [notice] Apache/2.0.63 (Win32) configured -- resuming normal operations
[Sat Mar 07 16:10:26 2009] [notice] Server built: Jan 17 2008 22:58:29
[Sat Mar 07 16:10:26 2009] [notice] Parent: Created child process 4388
[Sat Mar 07 16:10:26 2009] [notice] Child 4388: Child process is running
[Sat Mar 07 16:10:26 2009] [notice] Child 3356: Exit event signaled. Child process is ending.
[Sat Mar 07 16:10:26 2009] [warn] (OS 10038)在一個非套接字上嘗試了一個操作。 ?: setsockopt(SO_UPDATE_ACCEPT_CONTEXT) failed.
[Sat Mar 07 16:10:27 2009] [notice] Child 3356: Released the start mutex
[Sat Mar 07 16:10:27 2009] [notice] Child 4388: Acquired the start mutex.
[Sat Mar 07 16:10:27 2009] [notice] Child 4388: Starting 250 worker threads.
[Sat Mar 07 16:10:28 2009] [notice] Child 3356: Terminating 121 threads that failed to exit.
apache設置:
LoadModule weblogic_module modules/mod_wl_20.so
# 虛擬主機--主站
<VirtualHost *:80>
ServerAdmin
DirectoryIndex index.html
DocumentRoot E:\bea\user_projects\domains\
ServerName www.getingbin.org
ServerAlias getingbin.org
ErrorLog E:\log\web\apache\error_log
CustomLog E:\log\web\apache\access_log common
<IfModule mod_weblogic.c>
WebLogicCluster 127.0.0.1:8081,127.0.0.1:8082
MatchExpression *.jsp
MatchExpression *.do
MatchExpression *.com
MatchExpression /J/*
MatchExpression /j/*
MatchExpression /C/*
MatchExpression /c/*
MatchExpression /pra/*
MatchExpression /P/*
MatchExpression /p/*
MatchExpression /FCKeditor/*
DynamicServerList OFF
KeepAliveEnabled ON
KeepAliveSecs 30
</IfModule>
</VirtualHost>
轉載于:https://blog.51cto.com/xuqin/1239196
總結
以上是生活随笔為你收集整理的Waiting 180 more seconds for 1 worker threads to finish的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我国第三代航天远洋测量船远望 5 号船启
- 下一篇: 中兴回应网传人员优化情况 属于正常的人员