檢視Linux伺服器上的CPU和記憶體
CPU和記憶體(RAM)等資源是網站功能不可或缺的組成部分。如果您的程式碼使用量過多,網站可能會變慢,甚至完全無法運作。其他所有程序(如電子郵件)都和伺服器上的網站共用相同的資源。任何超出合理(合理)份額的進程都可能完全關閉伺服器。為什麼需要查看資源使用狀況?
- 您的資料庫驅動網站(如WordPress)速度很慢。
- 電子郵件需要很長的時間才能收到。
- 您的網站顯示錯誤或旋轉狀態
- 在伺服器執行的工作比正常處理(例如備份)需要的時間更長。
我該如何查看資源使用率?
Linux提供多種工具來調查CPU及記憶體的使用狀況,例如top , sar及Watch 。
top命令可讓您即時檢視執行中的系統工作。您可以檢視運作時間,平均負載,CPU及記憶體使用量等整體資訊。 -c開關可讓您在COMMAND(命令)下查看程式名稱。如需完整的快速鍵清單,請使用SSH中的man top 。
[root @ server〜] $ top -c top-15:08:23最多115天,6:37,2位用戶,平均負載:1.76,1.35,1.13工作量:總330,運行1,326睡眠,0已停止, 3殭屍CPU:0.7%us,2.9%s y,0.0%ni,81.5%id,14.9%wa,0.0%hi,0.1%s i,0.0%s t記憶體:總計32754672k,已使用28808088k,已釋放3946584k,321260k快換:已總共8388604k,已使用25992k,8362612k已釋放,8140560k快取PID USER PR NI VIRT RES SHR S%CPU%MEM TIME + COMMAND 6926 mysql 20 0 130g 16g 22m S 12.0 52.2 27065:56 / usr / sbin / mysqld --basedir = / usr --datadir = / var / lib / mysql --plugin-dir = / usr / lib64 / mysql / plugin 2454 td-agent 20 0 1210m 160m 2440 S 0.7 0.5 347:19.48 / opt / td-agent / embedded / bin / ruby -Eascii-8bit:ascii-8bit /
系統活動報告者(sar)是可協助您監控伺服器使用統計資料的工具。 SAR是sysstat套件的一部分。單獨使用sar會顯示過去24小時的統計資料。
sar -f可讓您查看當天上午12:00開始的歷史記錄檔案。
[root @ server〜] $ sar -f / var / log / sa / sa10 Linux 2.6.32-042stab141.3(server-hostname.net)01/10/2022 _x86_64_(24 CPU)CPU 12:00:01 AM %user%nice%s ystem%iowait%s深青色%idle 12:10:01 AM全部1.92 0.00 0.39 0.00 0.00 97.69 12:20:01 AM所有1.63 0.00 0.34 0.00 0.00 98.02 12:30:01 AM所有1.64 0.00 0.41 0.01 0.00 97.94 12:40:01 AM所有2.85 0.00 0.61 0.00 0.00 96.54 12:50:01 AM所有2.71 0.00 0.57 0.01 0.00 96.72 01:00:01 AM所有2.02 0.00 0.38 0.00 0.00 97.60 01:10:01 AM所有1.43 0.00 0.30 0.00 0.00 98.27
sar -r將顯示可用的及已使用的內存狀態
[root @ server〜] $ sar -r Linux 2.6.32-042stab141.3(server-hostname.net)02/02/2022 _x86_64_(24 CPU)12:00:01 AM kbmemfree kbmemused%memused kbbuffers kbcached kbcommit%commit 12:10:01 AM 99454800 32354304 24.55 1429856 22624260 8285744 5.91 12:20:01 AM 99760972 32048132 24.31 1429884 22631184 7960428 5.68 12:30:01 AM 99751920 32057184 24.32 1429920 22638392 7974804 5.69 12:40:01 AM 99638056 32171048 24.41 1429960643 8035000 5.73 12:50:01 AM 99752696 32056408 24.32 1430012 22644804 7891100 5.63
Linux觀察可讓您觀察命令或工作完成或執行的情況。觀看「mysql -e'show full processlist;'」 ,即可顯示所有執行中的mysql查詢,每2秒更新一次。
每2.0秒:mysql -e'顯示完整的processlist;'週六2月12 11:09:56 2022 Id用戶主機db命令時間狀態資訊26574057 mysql_db1 localhost mysql_db1查詢2送出SELECT * *從db_data_main其中DOT_NUMBER = 1381207 26574063 mysql_db1 localhost mysql_db1查詢1送出SELECT * *從db_data_main其中DOT_NUMBER 26574 3 mysql_wp3 localhost mysql_wp3休眠0無效26574068根本地主機無效查詢0初始顯示完整進程清單
後續步驟
高資源使用率可能是惡意流量或掛起的流程(如大型備份)造成的一次性問題。並非由流量或掛起進程造成的頻繁高資源使用率,只能透過最佳化或升級來解決。請注意,如果您並未最佳化伺服器和網站,升級只是暫時的解決方法。
有可能需要最佳化的跡象(伺服器和網站)
- 並非由惡意流量造成
- 網站程式碼已過期/產生過時錯誤
- CPU使用率高,但記憶體使用率低。
- 當流量增加時,MySQL查詢會滯後
有跡象表明可能需要升級了
- 您網站的流量持續穩定增長
- 伺服器已針對您的網站需求進行最佳化
- 您已消除了較長的mysql查詢,並已更新程式碼以支援新版PHP,以此最佳化了您的網站。
- 您使用快取(如Memcache),但負擔依然很高