Ubuntuには、古いPHPセッションを検索して削除するcronジョブがセットアップされています。
# Look for and purge old sessions every 30 minutes
09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] \
&& [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 \
-maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir \
fuser -s {} 2> /dev/null \; -delete
私の問題は、このプロセスの実行に非常に長い時間がかかり、大量のディスクIOがあることです。CPU使用率グラフは次のとおりです。
実行中のクリーンアップは、青緑のスパイクで表されます。期間の初めに、PHPのクリーンアップジョブはデフォルトの09分と39分にスケジュールされました。15:00にcronから39分の時間を削除したので、サイズの2倍のクリーンアップジョブは半分の頻度で実行されます(ピークが2倍の幅で、半分の頻度になります)。
IO時間に対応するグラフは次のとおりです。
ディスク操作:
アクティブなセッションが約14,000であったピーク時には、CPUの1つのコアの100%と、全期間にわたってディスクIOの100%と思われるものを使用して、クリーンアップが25分間実行されていることがわかります。なぜそれほどリソースを消費するのですか?ls
セッションディレクトリのは、/var/lib/php5
第二のほんの一部になります。では、なぜ古いセッションをトリムするのに25分かかるのでしょうか?これを高速化するためにできることはありますか?
このデバイスのファイルシステムは現在ext4で、Ubuntu Precise 12.04 64ビットで実行されています。
編集:私は負荷が異常なプロセス「フューザー」によるものであると疑っています(rm
私が見ているパフォーマンスよりも単純なものがいまいましい光景であると思っているので)。フューザの使用を削除して、何が起こるかを確認します。