我的一台 VPS 的平均负载非常高,这很奇怪,我天生不是服务器管理员,而是一名多年来学习过基础知识的网站开发人员。不过,我对 unix 非常有经验。
最近,我的一台 VPS 的设置与其他 VPS 完全相同,但似乎出现了奇怪的峰值。
您知道是什么原因导致峰值吗?我可以获得哪些信息来帮助诊断原因?
服务器信息:1GB RAM,Ubuntu,Apache+MySQL+PHP5,使用 Dovecot 发送邮件,使用 suPHP
信息:
Time: Wed May 25 11:10:21 2011 +0100
1 Min Load Avg: 12.56
5 Min Load Avg: 6.45
15 Min Load Avg: 2.83
Running/Total Processes: 2/110
附言:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2156 584 ? Ss Apr03 0:04 init [3]
root 1128 0.0 0.0 2248 324 ? S<s Apr03 0:00 /sbin/udevd -d
root 1433 0.0 0.0 1812 596 ? Ds Apr03 0:19 syslogd -m 0
root 1442 0.0 0.0 3448 660 ? Ss Apr03 0:00 /usr/sbin/dovecot
dovecot 1461 0.0 0.0 6648 1524 ? S Apr03 0:00 \_ dovecot/imap-login
dovecot 1462 0.0 0.0 6648 1524 ? S Apr03 0:00 \_ dovecot/imap-login
dovecot 1463 0.0 0.0 6648 1524 ? S Apr03 0:00 \_ dovecot/imap-login
dovecot 1465 0.0 0.0 6648 1524 ? S Apr03 0:00 \_ dovecot/imap-login
dovecot 1467 0.0 0.0 6648 1524 ? S Apr03 0:00 \_ dovecot/imap-login
dovecot 1468 0.0 0.0 6648 1528 ? S Apr03 0:00 \_ dovecot/imap-login
dovecot 1470 0.0 0.0 6648 1528 ? S Apr03 0:00 \_ dovecot/imap-login
dovecot 1471 0.0 0.0 6648 1524 ? S Apr03 0:00 \_ dovecot/imap-login
dovecot 1472 0.0 0.0 6648 1524 ? S Apr03 0:00 \_ dovecot/imap-login
dovecot 1476 0.0 0.0 6648 1524 ? S Apr03 0:00 \_ dovecot/imap-login
dovecot 1477 0.0 0.0 3364 828 ? S Apr03 0:00 \_ dovecot/anvil [35 connections]
root 1478 0.0 0.0 3356 768 ? S Apr03 0:00 \_ dovecot/log
root 1481 0.0 0.0 4824 1628 ? S Apr03 0:00 \_ dovecot/config
root 1490 0.0 0.0 4412 1532 ? S Apr03 0:00 \_ dovecot/auth [0 wait, 0 passdb, 0 userdb]
dovecot 31765 0.0 0.0 6648 1528 ? S Apr05 0:00 \_ dovecot/imap-login
dovecot 31774 0.0 0.0 6648 1528 ? S Apr05 0:00 \_ dovecot/imap-login
dovecot 31778 0.0 0.0 6648 1528 ? S Apr05 0:00 \_ dovecot/imap-login
dovecot 32514 0.0 0.0 6648 1528 ? S Apr07 0:00 \_ dovecot/imap-login
dovecot 32522 0.0 0.0 6648 1528 ? S Apr07 0:00 \_ dovecot/imap-login
dovecot 32531 0.0 0.0 6648 1524 ? S Apr07 0:00 \_ dovecot/imap-login
dovecot 19608 0.0 0.1 6644 2272 ? S May23 0:00 \_ dovecot/pop3-login
dovecot 19609 0.0 0.1 6644 2256 ? S May23 0:00 \_ dovecot/pop3-login
dovecot 19611 0.0 0.1 6644 2272 ? S May23 0:00 \_ dovecot/pop3-login
dovecot 19612 0.0 0.1 6644 2276 ? S May23 0:00 \_ dovecot/pop3-login
root 19660 0.0 0.0 3768 1344 ? S May23 0:00 \_ dovecot/auth [0 wait, 0 passdb, 0 userdb]
dovecot 19661 0.0 0.1 6644 2276 ? S May23 0:00 \_ dovecot/pop3-login
dovecot 19662 0.0 0.1 6644 2276 ? S May23 0:00 \_ dovecot/pop3-login
dovecot 19663 0.0 0.1 6644 2276 ? S May23 0:00 \_ dovecot/pop3-login
dovecot 19664 0.0 0.1 6644 2280 ? S May23 0:00 \_ dovecot/pop3-login
dovecot 19665 0.0 0.1 6644 2280 ? S May23 0:00 \_ dovecot/pop3-login
dovecot 19666 0.0 0.1 6644 2276 ? S May23 0:00 \_ dovecot/pop3-login
dovecot 19668 0.0 0.1 6644 2280 ? S May23 0:00 \_ dovecot/pop3-login
dovecot 19671 0.0 0.1 6644 2280 ? S May23 0:00 \_ dovecot/pop3-login
dovecot 28222 0.0 0.1 6644 2280 ? S 01:43 0:00 \_ dovecot/pop3-login
dovecot 28242 0.0 0.1 6644 2284 ? S 01:43 0:00 \_ dovecot/pop3-login
dovecot 28246 0.0 0.1 6644 2284 ? S 01:44 0:00 \_ dovecot/pop3-login
dovecot 28248 0.0 0.1 6644 2276 ? S 01:44 0:00 \_ dovecot/pop3-login
root 1500 0.0 0.0 2832 588 ? Ss Apr03 0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
root 1512 0.0 0.0 3708 976 ? S Apr03 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/tent.pid
mysql 1586 0.0 0.3 133196 7972 ? Sl Apr03 8:44 \_ /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --log-error=/var/lib/mysql/mysql-bin.err --pid-file=/var/lib/mysql/tent.pid
root 1768 0.0 0.0 3244 352 ? Ss Apr03 0:06 /usr/local/directadmin/da-popb4smtp
nobody 1776 0.0 0.0 9168 756 ? Ss Apr03 0:00 /usr/local/directadmin/directadmin d
nobody 1777 0.0 0.0 9288 1172 ? S Apr03 0:00 \_ /usr/local/directadmin/directadmin d
nobody 1789 0.0 0.0 9288 132 ? S Apr03 0:00 | \_ /usr/local/directadmin/directadmin d
nobody 1790 0.0 0.0 9288 132 ? S Apr03 0:00 | \_ /usr/local/directadmin/directadmin d
nobody 1791 0.0 0.0 9288 132 ? S Apr03 0:00 | \_ /usr/local/directadmin/directadmin d
nobody 1792 0.0 0.0 9288 132 ? S Apr03 0:00 | \_ /usr/local/directadmin/directadmin d
nobody 1793 0.0 0.0 9288 132 ? S Apr03 0:00 | \_ /usr/local/directadmin/directadmin d
nobody 18419 0.0 0.0 9168 192 ? S May19 0:00 \_ /usr/local/directadmin/directadmin d
nobody 18420 0.0 0.0 9168 168 ? S May19 0:00 \_ /usr/local/directadmin/directadmin d
nobody 18421 0.0 0.0 9168 168 ? S May19 0:00 \_ /usr/local/directadmin/directadmin d
nobody 18422 0.0 0.0 9168 168 ? S May19 0:00 \_ /usr/local/directadmin/directadmin d
nobody 18423 0.0 0.0 9168 168 ? S May19 0:00 \_ /usr/local/directadmin/directadmin d
mail 1794 0.0 0.0 9240 712 ? Ss Apr03 0:02 /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid
mail 14222 0.0 0.1 10836 2864 ? D 11:01 0:00 \_ /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid
mail 14271 0.0 0.0 9240 224 ? D 11:08 0:00 \_ /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid
ftp 1847 0.0 0.0 7404 1616 ? SLs Apr03 0:10 proftpd: (accepting connections)
root 1860 0.0 0.0 4488 632 ? Ss Apr03 0:04 crond
root 14250 0.0 0.0 5032 996 ? D 11:06 0:00 \_ crond
root 14254 0.0 0.0 5032 996 ? D 11:07 0:00 \_ crond
root 14267 0.0 0.0 5032 996 ? D 11:08 0:00 \_ crond
root 1868 0.0 0.0 5680 384 ? Ss Apr03 0:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a pam -n 2
root 1869 0.0 0.0 5680 136 ? S Apr03 0:00 \_ /usr/sbin/saslauthd -m /var/run/saslauthd -a pam -n 2
named 1888 0.0 0.0 70852 1892 ? Ssl Apr03 0:02 named -u named
root 1516 0.0 0.0 7196 764 ? Ss May19 0:00 /usr/sbin/sshd
root 26259 0.0 0.7 18812 15400 ? Ss 00:00 0:03 lfd - sleeping
root 14268 0.0 0.6 18812 14544 ? S 11:08 0:00 \_ lfd - (child) checking load...
root 14270 0.0 0.0 2528 884 ? R 11:08 0:00 \_ /bin/ps axuf
root 26419 0.0 2.0 49944 42240 ? Ss 00:12 0:00 /usr/sbin/httpd -k start -DSSL
apache 26424 0.0 2.0 50544 42628 ? S 00:12 0:00 \_ /usr/sbin/httpd -k start -DSSL
pegpro 14247 0.0 0.2 18284 4440 ? D 11:05 0:00 | \_ /usr/local/php5/bin/php-cgi
apache 26425 0.0 2.0 50552 42608 ? S 00:12 0:00 \_ /usr/sbin/httpd -k start -DSSL
pegpro 14236 0.0 0.2 18284 4440 ? D 11:03 0:00 | \_ /usr/local/php5/bin/php-cgi
apache 26426 0.0 2.0 50560 42620 ? S 00:12 0:00 \_ /usr/sbin/httpd -k start -DSSL
pegpro 14242 0.0 0.2 18284 4440 ? D 11:04 0:00 | \_ /usr/local/php5/bin/php-cgi
apache 9842 0.0 2.0 50596 42544 ? S 06:27 0:00 \_ /usr/sbin/httpd -k start -DSSL
root 14258 0.0 0.0 3096 1000 ? D 11:07 0:00 | \_ /usr/local/suphp/sbin/suphp
apache 9851 0.0 2.0 50560 42616 ? S 06:28 0:00 \_ /usr/sbin/httpd -k start -DSSL
root 14265 0.0 0.0 3096 1004 ? D 11:08 0:00 | \_ /usr/local/suphp/sbin/suphp
apache 11359 0.0 2.0 50560 42548 ? S 07:25 0:00 \_ /usr/sbin/httpd -k start -DSSL
apache 12184 0.0 2.0 50384 42432 ? S 09:07 0:00 \_ /usr/sbin/httpd -k start -DSSL
pegpro 14249 0.0 0.2 18284 4444 ? D 11:05 0:00 | \_ /usr/local/php5/bin/php-cgi
apache 13618 0.0 2.0 50388 42372 ? S 09:47 0:00 \_ /usr/sbin/httpd -k start -DSSL
root 14261 0.0 0.0 3096 1000 ? D 11:07 0:00 | \_ /usr/local/suphp/sbin/suphp
apache 13627 0.0 2.0 50420 42424 ? S 09:48 0:00 \_ /usr/sbin/httpd -k start -DSSL
root 14259 0.0 0.0 3096 1000 ? D 11:07 0:00 | \_ /usr/local/suphp/sbin/suphp
apache 13761 0.0 2.0 50380 42348 ? S 10:06 0:00 \_ /usr/sbin/httpd -k start -DSSL
pegpro 14248 0.0 0.2 18284 4440 ? D 11:05 0:00 | \_ /usr/local/php5/bin/php-cgi
apache 14253 0.0 1.9 50076 40812 ? S 11:06 0:00 \_ /usr/sbin/httpd -k start -DSSL
apache 14255 0.0 1.9 50076 40812 ? S 11:07 0:00 \_ /usr/sbin/httpd -k start -DSSL
apache 14260 0.0 1.9 50076 40812 ? S 11:07 0:00 \_ /usr/sbin/httpd -k start -DSSL
apache 14266 0.0 1.9 50076 40812 ? S 11:08 0:00 \_ /usr/sbin/httpd -k start -DSSL
虚拟机状态:
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 12 0 1740504 0 0 0 0 8 1 0 0 0 0 99 1 0
阿帕奇:
Could not retrieve Apache Server Status
编辑:
注意到 crons 可能是问题所在,我检查了我的 crontab,没有看到任何会在 11:10 运行的程序!
rsyncs 通常每天仅发送 1/2mb 的修改。
0 4 * * */3 /usr/local/sysbk/sysbk -q
15 3 * * * rsync -av --delete /home/ [email protected]:~/rsyncbackup/daily/
0 5 * * */14 rsync -av --delete /backup/ [email protected]:~/dabackup/
35 7 * * * curl -s -o /dev/null http://SNIP/billing.php?action=autosuspend
40 7 * * * curl -s -o /dev/null http://SNIP/billing.php?action=gen_upcoming
45 7 * * * curl -s -o /dev/null http://SNIP/billing.php?action=send_pending
30 7 * * * curl -s -o /dev/null http://SNIP/alp/billing.php
0 * * * * curl -s -o /dev/null http://SNIP/gitMail/index.php
我已经修改了我的平均负载电子邮件报告,添加了 iostat、mysql 进程和建议的 ps。下次收到消息时,我会更新这个问题!
答案1
任何未处于状态S
(睡眠)的命令都将被视为活动进程。这包括处于R
运行状态和D
阻塞状态的命令。(后者通常发生在等待磁盘或网络设备的 IO 时)
要找到这些进程的具体列表,请尝试以下命令: ps -efl | cut -c3- | egrep -v "^S"
。从ps
输出中可以看出,您似乎有一些 cron 作业卡住了,一些 exim 进程、您的 syslog 守护程序和一些 php-cgi 线程。这些进程可能都卡住了,等待磁盘访问。因此,您的硬盘可能已满,或可能出现错误,导致进程挂起。
尝试使用它iostat
来检查你的磁盘 IO?
——克里斯托弗·卡雷尔
答案2
可能有文件被锁定,dovecot 可能锁定了 mbox 文件,
我认为你可以通过查看 /proc/locks 来验证这一点