Linux
Ubuntu Linux,top命令結果解讀
我是 Linux 作業系統的新手,我在基於 drupal 的網站上遇到了麻煩,結果證明速度很慢。我正在使用 2 個單獨的伺服器來託管和 MYSQL。在執行top命令時,我得到以下結果
top - 06:34:26 up 17:54, 1 user, load average: 4.54, 4.98, 5.36 Tasks: 79 total, 1 running, 78 sleeping, 0 stopped, 0 zombie Cpu(s): 74.8%us, 23.6%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 1.7%si, 0.0%st Mem: 4044336k total, 3963584k used, 80752k free, 21760k buffers Swap: 1477940k total, 0k used, 1477940k free, 3530868k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1077 mysql 20 0 502m 181m 4124 S 98.8 4.6 549:02.28 mysqld
mysql 程序的 CPU 使用率為 99.7%。這是否意味著我的處理器正在最大化。可以做些什麼來解決這個問題?我需要添加更多核心嗎?然而,相反,平均負載很低。
我是一個絕對的新手,並且從書中學到了大多數行話。如果有人可以提供幫助,將不勝感激。
如果您已經有 2 或 4 個核心,那麼您應該檢查一下*為什麼MySQL 負載如此之大,這可能不是您的問題。*一個好的、巧妙優化的數據庫系統將能夠在最大化 CPU 時間之前使用更多的記憶體。在考慮硬體升級之前需要考慮的一些事情是:
- 表索引
- 慢查詢
- tmp 表設置
- (已編輯) 優化表
- *(已編輯)*數據庫碎片(見 marcoc 的回答)
- 系統上有足夠的 I/O 容量
我只是在猜測,但似乎您的系統在數據庫本身上花費了太多時間(在 I/O 上花費的時間不多,而且根本沒有交換等),所以您可能應該檢查您的索引……也許db 只是忙於掃描表,因為它沒有用於您執行的查詢的正確索引(如果是這種情況,添加硬體將無濟於事)
在那之後,如果你仍然需要更多的馬力,我會在系統中添加更多的記憶體,可能每個核心最多 4GiB(即,如果你執行 4 個核心,則為 16GiB),但這實際上取決於你的數據集大小和訪問模式(主要是讀,主要是寫,等等……)