0
我與Tomcat的如下問題併發服務請求時:Tomcat服務器
我創建了一個模擬Web服務,我使用的Thread.sleep(時間)來定義模擬服務的執行時間。我將此服務部署到Tomcat。
我創建了一個客戶端來同時向服務發送多個請求(50個請求)。
當我將執行時間設置爲一個小數字(例如2000毫秒)時,50個請求被成功返回。但是,當我將執行時間設置爲更大的數字(例如5000毫秒)時,某些請求會失敗。執行時間越長,失敗次數越多。
我一直在玩Tomcat的線程池配置,但目前爲止沒有幫助。我爲我的Tomcat連接器當前的配置如下:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="4"/>
<Connector executor="tomcatThreadPool"
port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="2000000"
acceptCount="50"
redirectPort="8443"/>
可能有人建議我一個解決方案來解決這個問題?
謝謝你的回答。 我也覺得這很奇怪。我已經檢查過配置是否有效。 事情是,當我設置Thread.sleep(time)time = 2000時,它可以正常工作,但是當time = 5000時,某些請求會失敗。 – trangmx
睡眠時間越長意味着線程被佔用的時間越長,因此它們可以服務於其他請求,可能會導致它們超時。如果你真的有50個線程,就不會發生這種情況。所以從外觀上看,你的線程少或者超過150個並行請求。也許你可以發佈整個server.xml嗎?你如何發起請求? – geert3
請在這裏查看整個server.xml:[server.xml](https://github.com/trangmx/phdproject/blob/master/Tomcat/conf/server.xml)。 我將應用程序配置爲只發送50個併發請求,您可以在此日誌文件中看到服務器上的訪問日誌:[訪問日誌](https://github.com/trangmx/phdproject/blob/master/Tomcat/ logs/localhost_access_log.2015-09-11.txt) – trangmx