ピンチ!サーバーのHDD容量が急にパンパンになった!原因はWordPressプラグイン??

私の運営しているとあるサイトでの話ですが、Disc I/O エラーが発生。

どうやら HDD の容量が一杯になっているみたいですが、おかしい・・・。

意外なディレクトリが肥大化していた

サーバー自体どう考えても 100G 以上の余裕はあるはず・・・と思いつつも df コマンドを打って確かめてみた所・・・。

Use 100% (´Д `;)

一体何が起こったのかわかりませんでしたが、ひとまずどのフォルダが大きいのか確認。

#フォルダ内のファイルサイズの合計を表示
du -sh ./*

du コマンド

すると WEB ページのディレクトリが大きいのがわかりました。

てっきりログが溜まり過ぎたとか、ヘタしたらディスクエラーでも起こしているのか思ったら普通に何かのファイルで容量が一杯。

で、調べていった結果。

WordPress の「wp-contents」フォルダ内にある「cache」フォルダが肥大。

というか、177Gって・・・ここまで気づかない私も酷いですが・・・w

原因となっているのはプラグインの「Head Cleaner」の様です。

参考にさせてもらったのはこちらのサイト

icoro : WordPress で使ってる Head Cleaner のキャッシュが 50GB とかになっていた話

上記のサイトで解説されてある通り、ここまでキャッシュが肥大化するのは「WordPress Popular Posts」というプラグインが原因のようです。

今後使用するときは上記プラグインをキャッシュ対象から外す事で今回の様な事になるのを防げそうです。

177G あるキャッシュファイルを消すのが問題に

とにかくファイル数がとんでもないことになってます(そりゃそうだ・・・)

普通のコマンド打っても蹴られます。

# 当たり前にコマンド打ってもエラーww
rm -rf ./cache
/bin/rm: Argument list too long

rm コマンド

ということでこちらを参考にさせて頂きました。

【Linux】大量のファイルを一括削除する。

どうやらパイプを使って検索した結果(リスト)を rm コマンドに渡してやると消してくれるようです。

最終的にこんな感じで。

1# とりあえず消すファイルがいくつあるのか見てみる
2# ※「Head Cleaner」のキャッシュディレクトリに移動してます。
3ls -U ./js/ | wc -l
4# とんでもない数字が出てきたので見なかったことにしました(数百万単位(´Д`;))
5
6# findコマンドの結果をrmコマンドに渡す
7find ./js/ -name '*.js' | xargs rm

ls コマンド wc コマンド

「cache」フォルダ内の「css」フォルダは普通に消せたので残る「js」フォルダの中の js ファイルを対象にしました。

ただ・・・これ消し終わるまでどのくらいかかるのか・・・・。

 

とりとめのないまとめ

削除コマンド打ったまま放置するのが怖かったのでPCの前にいる時だけコマンドを走らせ、結局全てのファイルを消すまでに一日以上掛かってしまいました・・・。

CPU、I/Oともに問題になるほどの負荷は無かったですがファイル数が膨大で予想よりも時間がかかりました。

「Head Cleaner」を使っている方、一度確認してみましょうw

HDDが一杯になってからだと色々と面倒です(´Д`;)