[Server] システムディスク容量が圧迫してきた時の対処方法

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

ApacheのシスログがPHPのwarningやerrorが記述されていくために、想定外のログ容量が発生する事があるが、
その時に、ディスク容量を食いつぶしてしまうリスクがある。

標準構成としては、システム領域と、サービス領域をパーティション分割しておく事を推奨されているが、
これは、システム領域を食いつぶしても、サービスの稼働領域を守るためだと思われる。
しかし、シスログ領域が100%になってしまうと、ログが取得できなくて、いざというときに
原因調査が行えなくなって結局は困ってしまう。

代替の原因は、PHPのwarningアラート

上記の中に膨大な容量に膨らんだログ・ファイルが存在するはずだ。
環境ないに バックアップするストレージサーバーが存在していれば、そのサーバーに対してrsync –remove-source-filesなどで、移動してしまえば、ディスク内から大容量ファイルが無くなる・・・

移動、削除するファイルが現行ファイルの場合は、容量削減にならないので要注意!

Apacheの場合、accessログファイルとerrorログファイルが1つのvertualhostについてログ書き込みとしてアクセスする設定になっているが、どうやら、容量の肥大化したログファイルを削除しただけでは、じつはdfコマンドをたたいて確認すると、容量が減っていない事がある。
「error.log.1」のようにログローテーション処理が行われたあとのログファイルの場合は、ファイルを移動や削除した段階で問題なく、容量削減できているのだが、「error.log」というapacheから現在アクセスされているファイルの場合は、モジュール側でメモリ内に展開されている状態のようで、dfコマンドでも容量が全く減らない。
これを解決するには、対象のモジュールをkillする以外に方法はないようだ。

やるべき事

apacheをkillしてしまっては、サービスを停止する事になるので、それこそ障害が発生してしまうので、行うべき内容としては、apacheの再起動という事です。

通常のように

としてもいいのだが、
安全に行うにはgracefulという処理で再起動した方がいいようだ。

こうすることでdfコマンドでみると容量が削減されていることも確認できる。

メモリ展開を確認してみる。

dfコマンドで容量が減っていない場合、どのモジュールでリソースが保持されているか確認するコマンドは

とコマンドを打ち込むと膨大にリソース状況が表示されて確認することができる。
特定のモジュールであればgrep処理をパイプでくっつけて詳細を確認してみてもいいと思うので、この辺の手順を覚えておいたほうが良さそうだ。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です