ブログ

原因が見当たらないサーバのload average(高負荷)の原因を調べる

2024年9月20日
開発用のサーバのLoad Averageがなぜか高い状況になってしまった。

TOPコマンドの結果を見る

まずは、topコマンドを見てみるが、以下のような結果になり、どこが分かるいのか全くわからない。

top - 22:05:26 up 54 min,  2 users,  load average: 2.19, 2.44, 2.32
Tasks: 669 total,   1 running, 668 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 
MiB Mem :  31867.3 total,  24913.6 free,   6475.8 used,    979.4 buff/cache     
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.  25391.5 avail Mem 

普通、Load Averageが高い場合には、CPU、メモリ、IOなどの何らかの問題が生じるはずなのだが、今回はその現象が全く見られない。

これまで、サーバ不可問題はいろいろと見てきたが、何も思いつかないし、実際、CPUもメモリも、I/Oもすべて問題ない。
こういう場合、何かウィルス系なのか?と疑問に思うが、とりあえず、このサーバからの通信もほぼないので、何か勝手に他と通信している感じもない。

それでもやはり、心配なのでありとあらゆるプロセスを落としてみてみる。systemctlでほぼほぼすべてのサービスを止めても変わらない。

ここで分かった事はどうやら、このサーバの最低の load averageは「2」が現状でミニマムになっている事。

こうなると、どうやらOSの基本的な部分で何かバグっているのだろうなと思いつつも、とりわけ実害がないので数週間そのままにしてしまった。

PSでプロセスを見る

自分が主につかう場合、「ps -ef」でプロセスをみているので、そこで癖がついてしまっていたが、「ps -aux」のオプションならプロセスの状態が見えることを失念していた。そこで、以下のように調べて見た。

#ps -aux | grep 'D<'
root         571  0.0  0.0      0     0 ?        D<   21:11   0:00 [vdev_autotrim]
root        2019  0.0  0.0      0     0 ?        D<   21:11   0:00 [vdev_autotrim]

「ビンゴ!」です。とりあえず、問題となるプロセスが見つかりました。

こういう系の原因調査はサーバのスペックが低かった昔はいろいろやったのですが、最近では、よほどのことがない限りおきず、また、その場合、他にもいろいろと現象が出ているので、プロセスを調べるまでもなく、これまでの経験則でおおよそ解決できるので、こういった基本に戻るのを忘れていました。

原因はZFSのバグだった

結論を言えば、このLoad Averageの原因は、ZFS(ファイルシステム)のバグだった。

以下のキーワードを使って調べると

"load average" "vdev_autotrim"

以下のような情報を発見

  1. https://github.com/openzfs/zfs/issues/15453
  2. https://bugs.launchpad.net/ubuntu/+source/zfs-linux/+bug/2057693

んー、こんな再発しやすい原因なら他にも同じような問題が生じている人が多そうなのに、不思議。
どうやら、zfsのautotrimをoffにすれば、バグ回避はできるようなのでそれで回避。

読み込み中