Load-Average

是什麼導致異常的高負載平均值?

  • June 8, 2012

我注意到上週二晚上,平均負載急劇上升,由於流量很小,這似乎是不正常的。通常,這些數字通常平均約為 0.40 或更低,並且我的伺服器內容(mysql、php 和 apache)已經過優化。我注意到 IOWait 異常高,即使程序幾乎不使用任何 CPU。

頂部 - 01:44:39 上升 1 天,21:13,1 個使用者,平均負載:1.41、1.09、0.86
任務:總共 60 個,1 個正在執行,59 個正在休眠,0 個停止,0 個殭屍
Cpu0: 0.0% us, 0.0% sy, 0.0% ni, 100.0% id, 0.0% wa, 0.0% hi, 0.0% si, 0.0% st
CPU1:0.0%us,0.0%sy,0.0%ni,100.0%id,0.0%wa,0.0%hi,0.0%si,0.0%st
cpu2: 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3: 0.0% us, 0.0% sy, 0.0% ni, 100.0% id, 0.0% wa, 0.0% hi, 0.0% si, 0.0% st
cpu4: 0.0%us, 0.0%sy, 0.0%ni, 100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
cpu5: 0.0%us, 0.0%sy, 0.0%ni, 100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
cpu6: 0.0%us, 0.0%sy, 0.0%ni, 100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
cpu7: 0.0%us, 0.0%sy, 0.0%ni, 91.5%id, 8.5%wa, 0.0%hi, 0.0%si, 0.0%st
記憶體:總共 1048576k,已使用 331944k,空閒 716632k,0k 緩衝區
交換:總共 0k,使用 0k,免費 0k,記憶體 0k

PID 使用者 PR NI VIRT RES SHR S %CPU %MEM TIME+ 命令 
1 根 15 0 2468 1376 1140 S 0 0.1 0:00.92 初始化 
1656 根 15 0 13652 5212 664 S 0 0.5 0:00.00 apache2 
9323 根 18 0 13652 5212 664 S 0 0.5 0:00.00 apache2 
10079 根 18 0 3972 1248 972 S 0 0.1 0:00.00 蘇 
10080 根 15 0 4612 1956 1448 S 0 0.2 0:00.01 bash 
11298 根 15 0 13652 5212 664 S 0 0.5 0:00.00 apache2 
11778 chikorit 15 0 2344 1092 884 S 0 0.1 0: 00.05 頂部 
15384 根 18 0 17544 13m 1568 S 0 1.3 0:02.28 miniserv.pl 
15585 根 15 0 8280 2736 2168 S 0 0.3 0:00.02 sshd 
15608 chikorit 15 0 8280 1436 860 S 0 0.1 0:00.02 sshd 

這是 VMStat

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu-- --
rb swpd 免費 buff 記憶體 si so bi bo in cs us sy id wa
1 0 0 768644 0 0 0 0 14 23 0 10 1 0 99 0

IOStat - 沒什麼不尋常的

總磁碟讀取:67.13 K/s | 總磁碟寫入:0.00 B/s
TID PRIO 使用者磁碟讀磁碟寫 SWAPIN IO> 命令 
19496 be/4 chikorit 11.85 K/s 0.00 B/s 0.00 % 0.00 % apache2 -k start
19501 be/4 mysql 3.95 K/s 0.00 B/s 0.00 % 0.00 % mysqld
19568 be/4 chikorit 11.85 K/s 0.00 B/s 0.00 % 0.00 % apache2 -k start
19569 be/4 chikorit 11.85 K/s 0.00 B/s 0.00 % 0.00 % apache2 -k start
19570 be/4 chikorit 11.85 K/s 0.00 B/s 0.00 % 0.00 % apache2 -k start
19571 be/4 chikorit 7.90 K/s 0.00 B/s 0.00 % 0.00 % apache2 -k start
19573 be/4 chikorit 7.90 K/s 0.00 B/s 0.00 % 0.00 % apache2 -k start
1 be/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % 初始化
11778 be/4 chikorit 0.00 B/s 0.00 B/s 0.00 % 0.00 % top
19470 be/4 mysql 0.00 B/s 0.00 B/s 0.00 % 0.00 % mysqld

載入平均圖表 - http://i.stack.imgur.com/kYsD0.png

在確定之前,我想確定這是否不是 MySQL 問題。此外,這是 OpenVZ 上的 Ubuntu 10.04 LTS 伺服器。

編輯:這可能會給 IO 等待一個很好的畫面

頂部 - 22:12:22 向上 17:41,1 個使用者,平均負載:1.10、1.09、0.93
任務:共 33 個,執行 1 個,睡眠 32 個,停止 0 個,殭屍 0 個
Cpu (s): 0.6% us, 0.2% sy, 0.0% ni, 89.0% id, 10.1% wa, 0.0% hi, 0.0% si, 0.0% st
記憶體:總共 1048576k,已使用 260708k,空閒 787868k,0k 緩衝區
交換:總共 0k,使用 0k,免費 0k,記憶體 0k

PID 使用者 PR NI VIRT RES SHR S %CPU %MEM TIME+ 命令
1 根 15 0 2468 1376 1140 S 0 0.1 0:00.88 初始化
5849 根 15 0 12336 4028 668 S 0 0.4 0:00.00 apache2
8063 根 15 0 12336 4028 668 S 0 0.4 0:00.00 apache2
9732 根 16 0 8280 2728 2168 S 0 0.3 0:00.02 sshd
9746 chikorit 18 0 8412 1444 864 S 0 0.1 0:01.10 sshd
9747 chikorit 18 0 4576 1960 1488 S 0 0.2 0: 00.24 巴什
13706 chikorit 15 0 2344 1088 884 R 0 0.1 0: 00.03 頂部
15745 chikorit 15 0 12968 5108 1280 S 0 0.5 0: 00.00 apache2
15751 chikorit 15 0 72184 25m 18m S 0 2.5 0: 00.37 php5-fpm
15790 chikorit 18 0 12472 4640 1192 S 0 0.4 0: 00.00 apache2
15797 chikorit 15 0 72888 23m 16m S 0 2.3 0: 00.06 php5-fpm
16038 根 15 0 67772 2848 592 D 0 0.3 0:00.00 php5-fpm
16309 系統日誌 18 0 24084 1316 992 S 0 0.1 0:00.07 rsyslogd
16316 根 15 0 5472 908 500 S 0 0.1 0:00.00 sshd
16326 根 15 0 2304 908 712 S 0 0.1 0:00.02 cron
17464 根 15 0 10252 7560 856 D 0 0.7 0:01.88 psad
17466 根 18 0 1684 276 208 S 0 0.0 0:00.31 psadwatchd
17559 根 18 0 11444 2020 732 S 0 0.2 0:00.47 sendmail-mta
17688 根 15 0 10252 5388 1136 S 0 0.5 0:03.81 蟒蛇
17752 團隊豌豆 19 0 44648 7308 4676 S 0 0.7 1:09.70 ts3server_linux
18098 根 15 0 12336 6380 3032 S 0 0.6 0:00.47 apache2
18099 chikorit 18 0 10368 2536 464 S 0 0.2 0: 00.00 apache2
18120 ntp 15 0 4336 1316 984 S 0 0.1 0:00.87 ntpd
18379 根 15 0 12336 4028 668 S 0 0.4 0:00.00 apache2
18387 mysql 15 0 62796 36m 5864 S 0 3.6 1:43.26 mysqld
19584 根 15 0 12336 4028 668 S 0 0.4 0:00.02 apache2
22498 根 16 0 12336 4028 668 S 0 0.4 0:00.00 apache2
24260 根 15 0 67772 3612 1356 S 0 0.3 0:00.22 php5-fpm
27712 根 15 0 12336 4028 668 S 0 0.4 0:00.00 apache2
27730 根 15 0 12336 4028 668 S 0 0.4 0:00.00 apache2
30343 根 15 0 12336 4028 668 S 0 0.4 0:00.00 apache2
30366 根 15 0 12336 4028 668 S 0 0.4 0:00.00 apache2

這是截至今天的免費 ram。

記憶體的已用空閒共享緩衝區總數
記憶體:1024 302 721 0 0 0
-/+ 緩衝區/記憶體:302 721
交換:0 0 0

更新:查看日誌,特別是導致 CPU 峰值的 PHP5-FPM。我發現它的段由於某種明顯的原因而出現故障。

[03-Jun-2012 06:11:20] 通知:[pool www] 孩子 14132 開始
[03-Jun-2012 06:11:25] 警告:[pool www] 子 13664 在 53.686322 秒後退出信號 11 (SIGSEGV)
[03-Jun-2012 06:11:25] 通知:[pool www] 孩子 14328 開始
[03-Jun-2012 06:11:25] 警告:[pool www] 孩子 14132 在信號 11 (SIGSEGV) 上退出 4.708681 秒後開始
[03-Jun-2012 06:11:25] 通知:[pool www] 孩子 14329 開始
[03-Jun-2012 06:11:58] 警告:[pool www] 子 14328 在信號 11 (SIGSEGV) 上退出 32.981228 秒後從開始
[03-Jun-2012 06:11:58] 通知:[pool www] 孩子 15745 開始
[03-Jun-2012 06:12:25] 警告:[pool www] 子 15745 在信號 11 (SIGSEGV) 上退出 27.442864 秒後開始
[03-Jun-2012 06:12:25] 通知:[pool www] 孩子 17446 開始
[03-Jun-2012 06:12:25] 警告:[pool www] 孩子 14329 在信號 11 (SIGSEGV) 上退出 60.411278 秒後開始
[03-Jun-2012 06:12:25] 通知:[pool www] 孩子 17447 開始
[03-Jun-2012 06:13:02] 警告:[pool www] 孩子 17446 在信號 11 (SIGSEGV) 上退出 36.746793 秒後從開始
[03-Jun-2012 06:13:02] 通知:[pool www] 孩子 18133 開始
[03-Jun-2012 06:13:48] 警告:[pool www] 子 17447 在信號 11 (SIGSEGV) 上退出 82.710107 秒後開始

我認為這可能會導致問題。如果這是原因,可能將其關閉為 fastcgi/fcgid 可能會解決它……但是,我仍然想看看是否有其他原因可能導致它這樣做。

我希望伺服器有記憶體問題。這將導致容器必須等待數據來自磁碟而不是緩衝區。如果您有權訪問伺服器,請嘗試vmstat在其上執行而不是在容器中執行它。虛擬伺服器的記憶體管理依賴於主機伺服器。我注意到的第一件事是數據中沒有緩衝區、記憶體或交換。這些對性能都很重要。

要查看哪個程序導致高 I/O,您可以使用dstatiotop

要查看 php 崩潰的原因,請確保在啟動 apache 時執行ulimit -c unlimited. 下次當 php 崩潰時,您將有一個核心轉儲。使用bt裡面的命令gdb來獲得崩潰的堆棧跟踪。例如

gdb /usr/bin/httpd core
(gdb) bt

見: http: //www.network-theory.co.uk/articles/gccdebug.html

引用自:https://serverfault.com/questions/395056