私は数日前まで完全に機能していたnagiosサーバーを持っています。 RAMを増やすために停止して再起動したところ、サーバー上でiowaitが劇的に増加しました(20%以上、以前は1%未満でした)。サーバー上で元の量のRAMを戻そうとしましたが、それでも同じ問題が発生します。
serverfaultで同様のiowaitの問題をたくさん読んだことがありますが、私の場合は説明を見つけることができません。
iotopを見ると、ページキャッシュとext3ファイルシステムのジャーナリング専用のkjournaldを実行しているpdflushのioがたくさんあることがわかります。それが正常かどうかはわかりません。他のserverfaultの質問によると、私はfstabにnoatimeを入れようとしました。 Ext3ファイルシステムは順序付きデータモードでマウントされます
Total DISK READ: 0.00 B/s | Total DISK WRITE: 210.44 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
650 be/3 root 0.00 B/s 0.00 B/s 0.00 % 99.99 % [kjournald]
11482 be/4 root 0.00 B/s 0.00 B/s 0.00 % 98.42 % [pdflush]
12167 be/4 nagios 0.00 B/s 0.00 B/s 0.00 % 0.12 % nagios -d /srv/eyesofnetwork/nagios-3.4.1/etc/nagios.cfg
11 rt/3 root 0.00 B/s 0.00 B/s 0.00 % 0.10 % [migration/3]
12168 be/4 nagios 0.00 B/s 0.00 B/s 0.02 % 0.08 % nagios -d /srv/eyesofnetwork/nagios-3.4.1/etc/nagios.cfg
12165 be/4 nagios 0.00 B/s 0.00 B/s 98.42 % 0.02 % nagios -d /srv/eyesofnetwork/nagios-3.4.1/etc/nagios.cfg
2600 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.02 % auditd
12164 be/4 nagios 0.00 B/s 0.00 B/s 0.00 % 0.00 % nagios -d /srv/eyesofnetwork/nagios-3.4.1/etc/nagios.cfg
8 rt/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/2]
20 rt/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/6]
26 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [events/0]
23 rt/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/7]
3047 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % snmpd -Ln -Lf /dev/null -p /var/run/snmpd.pid -a
12169 be/4 nagios 0.00 B/s 0.00 B/s 0.12 % 0.00 % nagios -d /srv/eyesofnetwork/nagios-3.4.1/etc/nagios.cfg
14 rt/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/4]
2601 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % auditd
5 rt/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/1]
17 rt/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/5]
5228 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % bash
10 rt/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/2]
13 rt/3 root 0.00 B/s 0.00 B/s 0.10 % 0.00 % [watchdog/3]
次の行
12165 be/4 nagios 0.00 B/s 0.00 B/s 98.42 % 0.02 % nagios -d /srv/eyesofnetwork/nagios-3.4.1/etc/nagios.cfg
非常に驚くべきことのようです:スワップがほとんどないのに、どうすれば98.42%のスワップインを持つことができますか:
free -o
total used free shared buffers cached
Mem: 4046468 3163796 882672 0 103548 2193604
Swap: 4192956 1572 4191384
トップは、高負荷と高iowaitを除いて、特定のものを表示しません
top - 10:07:56 up 12 days, 23:42, 4 users, load average: 8.60, 9.29, 9.85
Tasks: 177 total, 1 running, 176 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.0%sy, 0.0%ni, 77.2%id, 22.6%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 4046468k total, 3165500k used, 880968k free, 104204k buffers
Swap: 4192956k total, 1572k used, 4191384k free, 2201500k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5246 root 15 0 14252 2632 836 R 0.3 0.1 0:03.94 top
1 root 15 0 10372 696 584 S 0.0 0.0 0:03.61 init
2 root RT -5 0 0 0 S 0.0 0.0 0:14.80 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.73 ksoftirqd/0
4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
5 root RT -5 0 0 0 S 0.0 0.0 0:13.93 migration/1
6 root 34 19 0 0 0 S 0.0 0.0 0:01.75 ksoftirqd/1
7 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/1
8 root RT -5 0 0 0 S 0.0 0.0 0:09.51 migration/2
9 root 34 19 0 0 0 S 0.0 0.0 0:01.09 ksoftirqd/2
10 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/2
11 root RT -5 0 0 0 S 0.0 0.0 0:08.98 migration/3
12 root 34 19 0 0 0 S 0.0 0.0 0:01.46 ksoftirqd/3
13 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/3
14 root RT -5 0 0 0 S 0.0 0.0 0:20.36 migration/4
15 root 34 19 0 0 0 S 0.0 0.0 0:01.15 ksoftirqd/4
16 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/4
nagiosプロセスを無効にすると、システムの負荷は正常になります(つまり、<1)が、それでも高いiowaitが発生します。
その上、nagiosプロセスが実行されていなくても、DSKは100%ビジーです。ハードドライブに問題がありますか? (これはWestern Digital Greenであり、このようなサーバーでは実行されないはずです)。 dmesgまたはsyslogに関する特別なメッセージは表示されません。
あっ、すみません。デスクトップPC以外にWDGreenディスクを使用していますか?
しないでください。
それらは遅く、信頼性が低く(スリープ状態になり、RAIDアレイからドロップアウトします)、実行したいことにはまったく適していません。
高いIOWaitが発生している場合は、ディスクサブシステムが必要な量のディスクIOを処理できないことを意味します。
これを解決する簡単な方法は、ディスクを追加することです(理想的には、RAID6アレイの全体)。
また、smartctlを使用して一般的なディスクの状態を確認し、バックアップを取る必要があります(とにかく定期的にこれを行う必要がありますが、WD Greenを使いすぎている場合は、特に注意が必要です)。
swapoffおよびswaponコマンドを使用して、スワップをクリアします。この後、nagiosを停止し、まだ実行中のpidがあるかどうかを確認します。ps -ef|grep nagios
nagiosをもう一度開始します。
以下のコマンドは、スワップfsがどのパーティションを持っているかを示します
swapon -s
swapoff /dev/sdaN
swapon /dev/sdaN