負荷が非常に少ないCentOS-5サーバーがあります。 「sar」コマンドの一般的な出力は次のようになります。
02:20:01 PM CPU %user %Nice %system %iowait %steal %idle
02:30:01 PM all 0.63 0.00 1.23 0.31 0.00 97.84
02:40:01 PM all 0.92 0.32 1.34 0.45 0.00 96.97
02:50:01 PM all 0.76 0.00 0.93 0.77 0.00 97.54
03:00:01 PM all 0.41 0.00 0.72 0.15 0.00 98.72
03:10:01 PM all 0.78 0.32 1.49 1.83 0.00 95.58
03:20:01 PM all 0.27 0.00 0.50 0.62 0.00 98.61
ただし、毎晩午前4時10分にCPU使用率が非常に高いことを確認しています。これは、月の数日を除いてほぼ毎晩発生します。 「sar」コマンドは次のようなものを示しています。
03:00:01 AM all 0.10 0.00 0.10 0.11 0.00 99.68
03:10:01 AM all 0.08 0.32 0.18 0.21 0.00 99.21
03:20:01 AM all 0.03 0.00 0.03 0.19 0.00 99.76
03:30:01 AM all 0.01 0.00 0.02 0.06 0.00 99.91
03:40:02 AM all 0.75 0.32 3.21 15.43 0.00 80.28
03:50:01 AM all 0.95 0.00 3.43 9.25 0.00 86.36
04:00:01 AM all 0.69 0.00 3.79 4.86 0.00 90.66
04:10:01 AM all 22.38 0.54 4.47 30.92 0.00 41.69
04:20:01 AM all 2.99 0.02 4.58 4.95 0.00 87.46
04:30:01 AM all 0.34 0.00 0.61 13.22 0.00 85.83
04:40:01 AM all 0.05 0.32 0.17 0.52 0.00 98.95
04:50:01 AM all 0.22 0.00 0.36 0.11 0.00 99.32
05:00:01 AM all 0.23 0.00 0.36 0.12 0.00 99.28
CPU使用率やiowaitなどでこのピークの原因を特定するにはどうすればよいですか。/var/log/messagesを調べましたが、特定できませんでした。その時点で実行するように設定されている他のcronジョブやその他のものはありません。これは%userの下に表示されているので、ユーザープロセスであることがわかります。原因を正確に特定するにはどうすればよいですか?
これは、cron.daily
スクリプトが実行されるときです...デフォルトでは、毎日午前4:00の直後に実行されます。
/etc/crontabs
から
Shell=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily <-- THIS ONE!!
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
そして/etc/cron.daily
で。
犯人はおそらくあなたのmlocate.cron
であり、これはupdatedb
を実行し、一部のシステムでは非常に集中的になる可能性があります。
#!/bin/sh
nodevs=$(< /proc/filesystems awk '$1 == "nodev" { print $2 }')
renice +19 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "$nodevs"
/ etc/crontabに記載されているように、毎日午前4時2分に自動cron実行がスケジュールされています。
[...]
02 4 * * * root run-parts /etc/cron.daily
ls /etc/cron.daily/を実行すると、04:02AMにスケジュールされた実行中のコマンドが表示されます(これらは順番に実行されます)。実行前と実行後に負荷を出力するように簡単に変更できます。
ただし、これが標準のCentOSインストールである場合、高負荷の原因となるスクリプトがmlocate.cron、0logwatch(インストールされている場合)、またはlogrotateのいずれかである可能性が非常に高くなります。
mlocateは完全なファイルシステムスキャンを実行し(システムでのI/O待機の増加を説明します)、0logwatchはログファイルを解析し(非常に大きくなる可能性があり、I/O操作になります)、logrotateも重要なI /を作成できますoファイルシステム間でファイルを移動する場合。
これはほぼ毎日4:10に発生すると言っているので、大雑把な方法は、4:05から4:15まで1分ごとにcronでps aux
を実行し、出力をファイルに書き込むことです。次に、CPUを使い果たしているコマンドの%CPU使用率を確認できます。
Cronジョブである可能性があります-おそらく「locatedb」が更新されていますか?
夜間に独自のcron出力「ps」を追加すると、原因を特定するのに役立つ場合があります。