Tomcat 無緣無故地表現得很糟糕

Tomcat 無緣無故地表現得很糟糕

我們正在 Amazon EC2 伺服器(8 核處理器、7GB RAM)上的 Tomcat 6 上執行遊戲應用程式 .WAR。該應用程式使用託管在 Amazon RDS 上的 MySQL 資料庫。

當只有 20-30 個用戶在玩時,這個 Facebook 應用程式需要很長時間才能存取。與 1-2 個用戶相比,差異很大。整個 .WAR 約為 4mb,所有靜態內容託管在其他地方。

伺服器從未接近耗盡 RAM。 CPU利用率從未高於13.5-14%。即使有大約 500 名用戶,一切也完全陷入停滯狀態。線程數或線程池還沒有達到極限。我提高了最大線程數,但沒有產生明顯的差異。

我的理論是,Tomcat 只能使用一個處理器核心,這可以解釋為什麼即使 CPU 使用率在活動高峰時穩定在 13-14%,它也會減慢到停止狀態。
但我很難理解為什麼它只使用一個 CPU 核心。 server.xml 中沒有處理器上限。該應用程式包含多個 servlet(4 或 5)。 Java程式碼中沒有提到SingleThreadModel。

什麼可能導致應用程式運行速度極其緩慢?如果應用程式只有 1-5 人,則運作良好。 20-30人的時候,幾乎聯絡不上。

答案1

這可能是應用程式設計的缺陷。我們還有一個應用程式具有相同的行為。它的程式碼的很大一部分是同步的,因此無論我們給它多少個 CPU,它都有效地在單一執行緒中運行。在這種情況下,除了運行同一應用程式的多個實例並平衡它們之間的負載之外,您幾乎什麼都做不了。

相關內容