【備忘録】「kswapd」によるCPUとDISK I/Oへの高負荷現象の対策[Linux]

★環境
 OS:さくらVPS
 OS:Linux(CentOS 7)
 ウェブサーバー:Apache 2.4系

目次

ウェブサーバーに異常な負荷が発生した

ここ数日、ウェブサーバーで高負荷が発生しました。

調べると、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ページキャッシュ
2dentry・inode
3ページキャッシュ・dentry・inode

参照

cocoinit23
UbuntuでkswapdがCPU使用率100%になる OS:Ubuntu 18.04Tensorflowでディープラーニングを行っていた所、学習が始まって数時間放置した頃にモニターを確認してみるとCPU使用率が100%になり、コマンド入力を受け...
softelメモ
【Linux】メモリのキャッシュをクリアする at softelメモ 問題 メモリーのcachedを解放したい。 $ free total used free shared buffers cached Mem: 1026840 1014088 12752 0 119300 681588 […]...
Qiita
サーバーのメモリが少しずつ圧迫される原因と対策を調べてみた - Qiita サーバーのメモリが slab_cache で占有される サーバーのメモリが数日で slab_cache に占有されるので原因と対策を調査した。 メモリの使用状況の調査 meminfo me...
ログってなんぼ
Linux:キャッシュを開放する(/proc/sys/vm/drop_caches) - ログってなんぼ 同じ構成+同じアプリケーションのサーバーなのに片方のサーバーのメモリ使用率が100%近くに張り付いてしまっていたので調査したメモです
よかったらシェアしてね!
目次
閉じる