原因が見当たらないサーバのload average(高負荷)の原因を調べる
TOPコマンドの結果を見る
まずは、topコマンドを見てみるが、以下のような結果になり、どこが分かるいのか全くわからない。
普通、Load Averageが高い場合には、CPU、メモリ、IOなどの何らかの問題が生じるはずなのだが、今回はその現象が全く見られない。
これまで、サーバ不可問題はいろいろと見てきたが、何も思いつかないし、実際、CPUもメモリも、I/Oもすべて問題ない。
こういう場合、何かウィルス系なのか?と疑問に思うが、とりあえず、このサーバからの通信もほぼないので、何か勝手に他と通信している感じもない。
それでもやはり、心配なのでありとあらゆるプロセスを落としてみてみる。systemctlでほぼほぼすべてのサービスを止めても変わらない。
ここで分かった事はどうやら、このサーバの最低の load averageは「2」が現状でミニマムになっている事。
PSでプロセスを見る
自分が主につかう場合、「ps -ef」でプロセスをみているので、そこで癖がついてしまっていたが、「ps -aux」のオプションならプロセスの状態が見えることを失念していた。そこで、以下のように調べて見た。
「ビンゴ!」です。とりあえず、問題となるプロセスが見つかりました。
こういう系の原因調査はサーバのスペックが低かった昔はいろいろやったのですが、最近では、よほどのことがない限りおきず、また、その場合、他にもいろいろと現象が出ているので、プロセスを調べるまでもなく、これまでの経験則でおおよそ解決できるので、こういった基本に戻るのを忘れていました。
原因はZFSのバグだった
結論を言えば、このLoad Averageの原因は、ZFS(ファイルシステム)のバグだった。
以下のキーワードを使って調べると
以下のような情報を発見
- https://github.com/openzfs/zfs/issues/15453
- https://bugs.launchpad.net/ubuntu/+source/zfs-linux/+bug/2057693
んー、こんな再発しやすい原因なら他にも同じような問題が生じている人が多そうなのに、不思議。
どうやら、zfsのautotrimをoffにすれば、バグ回避はできるようなのでそれで回避。