2014-03-25 92 views
1

負荷下暫時不可使用OpenShift企業2.0,我有一個簡單jbossews(tomcat7)+使用連接到一個MySQL數據庫JSP文件的MySQL 5.1應用程序。該應用程序是作爲非縮放應用程序創建的(如果啓用縮放,則會出現同樣的問題)。使用一個JMeter驅動程序只有一個併發用戶並且沒有思考時間,它將在大約2分鐘內(約200 req/sec)突然出​​現,然後它將開始分批返回「503服務暫時不可用」(每次幾秒鐘)開始和結束剩下的測試。即使我沒有改變(不重新啓動應用程序),如果我稍等片刻,然後再試一次,它也會做同樣的事情 - 首先它看起來很好,但它會以錯誤開始。服務在OpenShift企業2.0

齒輪遠未完全利用(存儲器/ CPU),並且我找到的唯一日誌,顯示一個問題是在/ var /日誌/ httpd的/ error_log中,這與這些項填滿:

[Tue Mar 25 15:51:13 2014] [error] (99)Cannot assign requested address: proxy: HTTP: attempt to connect to 127.8.162.129:8080 (*) failed 

望着那個錯誤開始發生的時間節點主機上的「頂」命令,我看到幾個httpd進程激增到頂部開啓和關閉。

所以它看起來像我在某種程度上用盡代理連接或類似的東西。但是,我不確定只有一個併發用戶是如何發生的。任何想法如何解決這個問題?我找不到任何類似的帖子。

回答

1

核心問題是,由於連接滯留在TIME_WAIT中,系統正在用盡臨時端口。檢查使用:

netstat -pan --tcp | less 

netstat -pan --tcp | grep -c ".*TIME_WAIT" 

僅計算時間的連接數等待狀態。

這些是由節點端口代理(httpd)到tomcat後端的連接。有幾種方法可以更改TCP設置以減輕問題。首先嚐試啓用重用。追加以下到/etc/sysctl.conf:

# allow reuse of time_wait connections 
net.ipv4.tcp_tw_reuse=1 

這將允許在TIME_WAIT狀態的連接被重用,如果沒有可用的臨時端口。

但是,問題主要依然是這些連接沒有正確彙集。我不會在具有相同應用程序+驅動程序的設備之外遇到此問題 - 這意味着連接正確集中並且不必處於TIME_WAIT狀態。代理中的某些內容必須干擾連接關閉。

貌似mod_proxy的/ mod_rewrite的未配置爲連接池/存活或它們與其不兼容。

0

你應該首先嚐試並移動到虛擬主機的路由,如果你達不到這個問題,但TCP TW再利用可以幫助如果虛擬主機連接仍然如此之高,你仍然可以運行進出港口。

https://access.redhat.com/articles/1203843也有很多關於該主題的有用信息。