統(tǒng)錯誤提示如下:
Failure of server APACHE bridge:
--------------------------------------------------------------------------------
No backend server available for connection: timed out after 10 seconds.
--------------------------------------------------------------------------------
Build date/time: May 6 2003 15:18:12
--------------------------------------------------------------------------------
Change Number: 255426
以上問題不知道在什么條件下才出現(xiàn)?偶然出現(xiàn)
前段時間是正常的,但是這兩天內(nèi)卻出現(xiàn)了四次
出現(xiàn)以上問題的時候,重啟Weblogic也不能恢復(fù)正常
只能重啟整臺服務(wù)器才可以:(
今天重新驗證了一遍!
1. 在出現(xiàn)這種Failure of server APACHE bridge:錯誤時,
采用 7001端口訪問 Weblogic上的服務(wù),還是正常的!
通過 7001端口運行 jsp程序也都正常,那說明問題不在 wls上
2. 而前端的.html是可以正常瀏覽,那也能說明apache是正常的
所以說問題只會出現(xiàn)在Apache 跟wls的橋接上面
而橋接的代碼如下:
#WebLogic Server Proxy Settings
LoadModule weblogic_module modules/mod_wl_20.so
<IfModule mod_weblogic.c>
WebLogicHost localhost
WebLogicPort 7001
MatchExpression *.jsp
MatchExpression *.do
</IfModule>
我想這段代碼大家已經(jīng)很熟悉了,應(yīng)該不會有什么問題的吧?
使用 apache -l或者apache -t也都可以查看到mod_wl_20模塊正常使用
apache的error.log,有如下代碼
[Sun Aug 01 01:54:05 2004] [warn] (OS 64)指定的網(wǎng)絡(luò)名不再可用。 : winnt_accept: Asynchronous AcceptEx failed.
[Sun Aug 01 01:54:07 2004] [error] CONNECTION_REFUSED [os error=0, line 1487 of ../nsapi/URL.cpp]: 211.99.203.123:7001 errno = 0
在BEA.com的文檔中心發(fā)現(xiàn)了如下重要發(fā)現(xiàn),以下整理出來的解決辦法,未經(jīng)最后驗證。
降低Connection_Refused錯誤的解決辦法
這是出現(xiàn)Apache橋錯誤的重要原因(未驗證)
解決辦法如下:
1. 增加Weblogic Server中Accept Block的數(shù)值,默認(rèn)值為50
BEA提示以25%的速度進(jìn)行增加,直到不出現(xiàn)Connection_Block的錯誤提示。//這里我將其調(diào)高至200
2. 設(shè)置Apache的Httpd.conf中,KeepAlive為On
3. 減小Windows 2000中TcpTimedWaitDelay時間,默認(rèn)情況下為240(未設(shè)置的情況下也是這個數(shù)值)
此項設(shè)置需要到注冊表如下位置進(jìn)行設(shè)置
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters/TcpTimedWaitDelay
如果注冊表中沒有TcpTimedWaitDelay這個項目,BEA提示增加這個項目,并設(shè)置為雙字節(jié)(DWORD)類型
數(shù)值設(shè)置為30 ~ 240之間即可 //這里我將其設(shè)置為120
今天又出現(xiàn)這個情況了,不過是白天,和web應(yīng)用的作者一起對weblogic的情況進(jìn)行了觀察。
通過weblogic控制臺,可以看到Throughput這里大都是在處理1左右的訪問,Queue Length這里卻在不停的漲,開始就對Thread count做了修改,從50調(diào)整到了400,但是還是可以看到Thread會用完,一會Queue Length就又漲起來了。
分析一下就可以知道,情況應(yīng)該是Queue的線程對訪問的處理速度太慢,導(dǎo)致需要處理的隊列越來越多。需要處理隊列的增長速度比隊列的處理速度慢,這樣不管有多少線程,肯定最后都會導(dǎo)致不夠用。
現(xiàn)在大家就開始考慮問題是不是出在應(yīng)用這里了,應(yīng)用執(zhí)行速度慢,weblogic線程就會一直占著,就會導(dǎo)致線程用盡。而實際上確實是應(yīng)用這里的問題。
應(yīng)用對訪問的處理速度很快,有訪問進(jìn)來就先放到隊列,而隊列的處理速度卻是500ms處理一下,這樣一秒也就處理2個。這樣問題的原因就很明確了,1s內(nèi)外部訪問應(yīng)用可能有10來次,而應(yīng)用才處理2個,所以自然會將線程占滿了。
調(diào)整隊列處理速度之后問題就解決了,空閑線程一直是400。