
我的 Debian GNU/Linux 專用機器上的平均負載有問題。它們(其中 2 個)都運行 MySQL + 自訂遊戲伺服器軟體 - 一個小型的「MMORPG」(一點也不龐大)。 CPU使用率和記憶體使用率都正常。 CPU 使用率通常< 5%。 RAM 使用率確實會上升到 80 - 90% 左右,但總是有一堆空閒、快取或緩衝的記憶體。交換使用量為 0。
當使用 uptime、top 或任何其他顯示負載的命令監控負載時,它會隨機跳至 4 甚至更多。這顯然是一個問題,特別是考慮到兩個盒子「僅」有 2 個核心。在平均負載發生神奇的跳躍之後,它開始平穩下降,這表明這只是資源使用量的暫時跳躍。每當我設法以 1 秒更新頻率盯著頂部大約 15 分鐘時,CPU 使用率始終為 0-5%,最多為 10%。
我嘗試過一些工具,如 htop、vmstat、dstat 等,但都無濟於事。以下是任何有興趣的人的日誌:
http://www.k-zodron.com/log.txt
除了開頭幾行出現的情況外,CPU 使用率幾乎沒有上升,而負載卻躍升至天文數字。我不是這方面的超級專家,但將 4KB 寫入光碟聽起來也不像是 I/O 瓶頸。
我還運行了 MySQL Tuning Primer Tool,它報告一切正常。
有什麼想法如何追蹤和解決問題嗎?謝謝!
編輯
http://www.k-zodron.com/munin/
Munin 統計數據大約每 5 - 10 分鐘更新一次。
答案1
難道是mysql使用了臨時表?你可以用 io stat 添加一些 munin 圖表嗎?提供的日誌中的 io 數字似乎低得令人難以置信。
您的工作集是什麼 - 資料是否適合記憶體[看起來是這樣]?你是否時不時地對sql進行大量寫入[從日誌看來-根本沒有]?
是否有可能突然出現並發請求數量激增的情況 [sql 或您的自訂伺服器]? cat /proc/net/ip_conntrack|wc -l 說什麼?在負載峰值期間它顯示什麼?
你能打開mysql嗎慢查詢日誌記錄- 例如,所有內容 > 1 或 2 秒?
您的磁碟是直接連接到伺服器還是 iscsi / nfs?您可以檢查磁碟的健康狀態[智慧型]/raid 狀態嗎?也許其中一個驅動器發生故障...或者您可以在非高峰時段運行簡單的 io 磁碟基準測試,以確保獲得不錯的讀取/寫入速度。
或者 dmesg 中可能會顯示一些醜陋的東西?
編輯:檢查 netstat |wc -l 是否與負載相關
檢查 ps axms|wc -l 是否與負載相關
檢查 lsof |wc -l 是否與負載相關
[最好破解小型 munin 插件,以便讓它們登上排行榜]。
答案2
您需要更多指標。我使用 ganglia 來收集不同的值,經典的值:cpu、記憶體、網路、磁碟 i/o 等;基於服務的指標:http請求、mysql查詢和慢查詢等;基於應用程式的指標,即有多少用戶連接到遊戲,或應用程式呼叫關鍵功能的次數。
分析該資訊並與負載峰值進行比較可以讓您更好地了解系統中發生的情況。