2012-02-27 34 views
2

我非常喜歡Tomcat新手,所以我猜測這個答案非常簡單,但Google今天對我不友好。爲多個同時發出的SOAP請求配置Tomcat

我在Apache Tomcat上安裝了Java Web應用程序。雖然應用程序有一個首頁(用於診斷目的),但應用程序實際上都是關於SOAP接口的。沒有客戶永遠不需要查找服務器的網頁。客戶端向服務器發送SOAP請求,服務器解析請求,然後在數據庫中查找結果。然後結果再通過SOAP傳遞迴客戶端。

在其默認配置中,Tomcat似乎對請求進行排隊。我的實驗包括將客戶端安裝在兩臺指向同一臺服務器的獨立機器上,並在同一時間運行搜索(其中一臺機器在另一臺機器後0.11秒,但您可以看到圖片)。

如何配置併發請求線程的數量? 我的理想配置是有X個請求線程,每個線程在Y分鐘或Z請求之後(以較早者爲準)循環自己(即調用析構函數和構造函數並循環其內存分配)。我被告知可以配置IIS來做到這一點(儘管我也沒有使用IIS的經驗),但是你如何使用Tomcat來做到這一點?

我希望能夠回收線程,因爲Tomcat在請求進入時並不會釋放內存,這意味着當我們正在接近時偶爾出現(但不一致)Java堆空間錯誤內存限制(我已經在2GB服務器上配置爲1GB)。我不是100%確定這是由於我的應用程序中是否存在內存泄漏,或者僅僅是因爲我使用的工具使用了大量內存。

任何意見將不勝感激。

感謝, 裏克

+2

太奇怪了...... SOAP請求最後是HTTP請求,Tomcat(任何Web容器)都能夠支持併發請求(無需排隊)。什麼是您的SOAP引擎(Axis,JAX-WS)? – 2012-02-27 16:44:31

+1

我相信JAX-WS。總是有可能我錯了,而不是排隊,但即使是這樣,我仍然希望能夠配置它/可以看到配置是什麼。 – RikSaunderson 2012-02-27 16:56:20

+0

默認情況下,Tomcat併發請求(如果沒有它,這將會是無用的!)。請發佈您正在使用的WS框架來實現您的服務。 – Perception 2012-02-27 16:57:57

回答

1

Tomcat中,默認情況下,可處理多達150個併發的HTTP請求 - 這是完全可配置的,顯然這取決於您的服務器規格和應用而變化。但是,如果您的應用程序必須處理連接的「突發」,我建議您查看Tomcat的最小和最大「備用」線程。這些線程正在積極等待連接。如果沒有足夠的等待線程,Tomcat必須分配更多(這會產生輕微的開銷),因此您可能會看到延遲。

而且,看看我的回答了這個問題涵蓋了如何配置連接器:

Tomcat HTTP Connector Threads

另外,看看基本的JVM調整 - 特別是關係到堆分配開銷和GC暫停時間。