目次
ウェブサーバーに異常な負荷が発生した
ここ数日、ウェブサーバーで高負荷が発生しました。
調べると、CPU使用率とDISK I/Oの高負荷が確認されました。
Topコマンドで原因を特定
高負荷になる直前、コンソールを開いてtopコマンドで確認すると「kswapd0」というプロセスが以上に高くなってました。
以下の画像は、対処後に取ったスクリーンショットなので、落ち着いてはいますが、高負荷時には最も高い負荷を示していました。
「kswapd」を調べる
この「kswapd」を調べると、どうやらスワップ関連のプロセスである事が判りました。
これが頻繁に発生すると、CPUやDISK I/Oを消費して、高負荷に繋がりかねないようです。
高負荷への対応
スワップする際、実メモリの空きの割合を設定する
まずは、スワップを作成するのに、実メモリがxx%まで切ったら作成するように設定しました。
sudo echo vm.swappiness=<スワップを作成する実メモリ空き割合値(%)を入力> | sudo tee -a /etc/sysctl.conf
10%にしたいなら「vm.swappiness=10」として上記コマンドを実行します
キャッシュを開放する
「drop_caches」の設定でキャッシュを開放します。(Linux 2.6.16 以降対応)
sudo echo <drop_cachesの値> > /proc/sys/vm/drop_caches
以下の表から解放したい値を決めページキャッシュのみ解放なら「sudo echo 1 >」として上記コマンドを実行します。
drop_cachesの値 | 解放の効果 |
---|---|
1 | ページキャッシュ |
2 | dentry・inode |
3 | ページキャッシュ・dentry・inode |
参照
【Linux】メモリのキャッシュをクリアする at softelメモ
問題 メモリーのcachedを解放したい。 $ free total used free shared buffers cached Mem: 1026840 1014088 12752 0 119300 681588 […]...
サーバーのメモリが少しずつ圧迫される原因と対策を調べてみた - Qiita
サーバーのメモリが slab_cache で占有されるサーバーのメモリが数日で slab_cache に占有されるので原因と対策を調査した。メモリの使用状況の調査meminfomeminfo…