2010-07-05 88 views
3

我在服務器上部署了一個Web應用程序。 我創建了一個腳本來執行應用程序的負載(壓力測試)。壓力使用10個線程產生不同的請求。 我到達成以下狀態,如圖中的Tomcat經理:Tomcat線程就緒

免費存儲空間:34.57 MB的內存總量:1166.43 MB最大內存:1166.43 MB

最大線程數:200當前線程數:59當前線程忙:12 最大處理時間:60295419毫秒的處理時間:1.8809264E7的請求數:233217錯誤計數:8100個接收字節:4.11 MB發送的字節數:7493.59 MB

根據此狀態12個線程都很忙的服務,同時請求其他47個線程處於就緒狀態。 最初分配的1166.43MB中有34.57 MB可用存儲空間。我懷疑,因爲tomcat不會銷燬未使用的就緒線程,內存不會被釋放,但我不確定。 有沒有人有任何其他的見解?有誰知道如何超時準備線程?

感謝

回答

2

那些47個一線坐在雄貓thread pool。他們會在申請期間保持活力。創建和銷燬線程可能非常耗時,因此讓線程在池中等待工作可以加快應用程序的速度,而不是在每次獲取請求時創建新線程。請參閱關於how to configure your thread pool的tomcat文檔(例如增加/減少最大線程數)。

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" 
    maxThreads="60" minSpareThreads="4"/> 
+0

感謝您的回覆。 你認爲這會解決內存問題嗎?我的意思是你認爲我已經這麼做了,因爲ready線程沒有被釋放,而且內存不是? – 2010-07-05 10:37:17

+0

@Clint難道線程本身不會佔用太多的內存(除非你使用大量的ThreadLocals,這是不太可能的)。您必須查看服務器的其他部分才能找到正在使用的內存,例如請參閱:http://stackoverflow.com/questions/185893 – krock 2010-07-06 12:56:13