EC2 伺服器上的 CPU 和平均負載衝突
我很難理解是什麼伺服器資源導致我的 Java 遊戲伺服器出現延遲。在我的遊戲伺服器的最後一個更新檔中,我將我的 EC2 燈伺服器從apache2.2, php5.3, mysql5.5 更新為apache2.4, php7.0, mysql5.6。我還更新了我的遊戲本身,以包含更多通過每個遊戲循環循環的怪物實例——除此之外。
正如您在圖像中看到的那樣,我的 Java 程序的 CPU 使用率在最後一個螢幕截圖中穩定在 80% 左右,但平均負載達到 1.20。我什至看到它今天早上高達 2.7。cpu 積分會影響我的伺服器的實際 cpu 汁量,因此隨著積分餘額的減少,百分比上升是有道理的,但為什麼在 80% 時我的伺服器會滯後?
在我的 Amazon EC2 指標中,我看到 cpu 為 10%(這讓我更加困惑):
就在我啟動伺服器時,我的 mmorpg 完全沒有滯後。然後,一旦我的 cpu 積分耗盡,它就會開始滯後。這讓我覺得它是基於 cpu 的,但是當我看到 10% 和 80% 時,我不明白為什麼。任何幫助將不勝感激。我在一個 T2.micro 實例上,所以它有 1 個 vCPU。如果我升級到下一個實例,它的價格幾乎翻了一番,並且保持在 1 的相同 vCPU 上,但有更多的積分。
長話短說,當 80% 的數字讓我失望時,我想完全了解我的情況。我不只是想把錢扔在這個問題上。
您注意到
st
? 這些是“被盜”的 CPU 週期——你不能使用的周期,因為你已經完全幾乎 - 或完全 - 耗盡了你的 CPU 信用餘額。使用率是 10% 是某個時間視窗的平均值,可能是 5 分鐘。如果您觀察 的輸出
top
,您應該看到隨著時間的推移,100% 減去被盜減去空閒大約為 10%。此時您基本上沒有可用的 CPU 空間。在這些條件下,時間關鍵型工作負載預計會表現出不一致的響應能力。
您的工作量對於 t2.micro 來說太大了。如果不是這種情況,您將始終擁有多餘的 CPU 積分……本質上,顧名思義。除非您可以做一些事情來減少工作量或提高程式碼效率,否則目前的症狀表明需要更大的實例類。