ホームお問い合わせプロフィール未経験→就職転職合格率年収の相場ブラック企業判別定時帰りする方法

phpsessioncleanのせいでサーバーが重かった話

に投稿 技術 アフィリエイトリンクを含みます

アクセス数増えてないのになぜかサーバーが重いというか時々nginxが応答しないでエラー返すときがあり、調べてみたところ、結論は、PHPのセッションファイルを定期実行で削除するphpsessioncleanが原因でした。

やったこと

  1. htopでロードアベレージが上がってきたことを確認。htop上では特に重いプロセスはない。nginxなどのサービスのプロセスしか出ないから。となるとサービスじゃない何かが原因だろうと考えて、
  2. topコマンドを打つ。一番上の右端にfindと書いてある。findコマンドが重いんか?ということで、
  3. ps aux | grep find を実行してみたら、find -O3 /var/lib/php/sessions/ -ignore_readdir_race -depth -mindepth 1 -name sess_* -type f -cmin +24 -delete このコマンドが原因のようだとわかる。wコマンドやps -C find -o comm,pid,ppid,%cpu,psrもした。
  4. このコマンドから-を除去してGoogle検索してみると、phpsessioncleanが見つかる。
  5. phpsessioncleanの中身を見たら、当該findコマンドが見つかる
  6. systemctl | grep php  するとphpsessionclean.timerが見つかる。session files every 30 minsと書いてある。重くなる頻度がちょうど30分ごとくらいだから、これだなと。
  7. systemctl status phpsessionclean.timer コマンド → activeのようなので、systemctl stop phpsessionclean.timer で停止。systemctl disable phpsessionclean.timer で無効化。
  8. phpsessioncleanでやっていたこと(PHPのセッションファイルの古いファイルを定期削除)を行うプログラムを自作して定期実行

 

これで完了です。その後、サーバーが重くなる現象は解消しました。

なんで今まで普通に動いていたfindコマンドが重くなったのかは謎ですが、ひとまずこれで様子を見ようかなと思います。

参考にした記事