ホームページ  >  記事  >  バックエンド開発  >  PHP は大量のセッションをメモリに保存し、ハッシュし、期限切れのリサイクル_PHP チュートリアル

PHP は大量のセッションをメモリに保存し、ハッシュし、期限切れのリサイクル_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:38:561215ブラウズ

プログラムの必要性により、サーバーのトラフィックが比較的多く、セッションの有効期限が 3 時間に設定されているため、/tmp の下に約 200,000 のセッション ファイルが蓄積されます。これにより、カーネルによる CPU 使用率が急激に増加します。セッションの読み書きでは、多数の小さなファイルがランダムに読み書きされ、それらが 1 つのディレクトリに集中するため、iowait も急激に増加します。

まず、セッションをメモリに置くことを検討してください。最も簡単な方法は、/tmp を tmpfs ファイル システムとして、つまりメモリ内にマウントすることです。 詳細については、「Linux での一時フォルダーとしてのメモリの使用」を参照してください

2 番目のステップは、セッションを別のディレクトリに保存することです

PHP 自体はセッションのマルチレベルのハッシュをサポートしています
php.ini で、;session.save_path = /tmp を
に変更します。

session.save_path = "2;/tmp/session"

は、セッションをフォルダー /tmp/session に保存し、2 とハッシュを使用することを意味します。

保存して終了し、3 番目のステップが完了するまで待って、php を再起動します

3番目のステップは、セッションストレージフォルダーを作成することです

PHP はこれらのフォルダーを自動的に作成しませんが、フォルダーを作成するためのスクリプトがソース ファイルで提供されています。以下のスクリプトも使いやすいです

I="0 1 2 3 4 5 6 7 8 9 a b c d e f"

$I の acm の場合;
する
$I の x について;
する
mkdir -p /tmp/session/$acm/$x;
完了しました;
完了しました
chown -R 誰もいない:誰もいない /tmp/session
chmod -R 1777 /tmp/セッション

/tmp はメモリに使用されるため、サーバーの再起動後にその中のファイルはすべて失われます。そのため、php を起動する前に、上記のスクリプトを /etc/rc.local に追加して配置する必要があります。

4番目のステップ、セッションのリサイクル

セッションは session.gc_maxlifetime 後に期限切れになりますが、時間が経つと、/tmp スペースが占有されてしまい、すぐには削除されません。具体的な削除アルゴリズムを勉強するのが面倒です。次のコマンドは、期限切れのセッションを削除できます。ここで定義した有効期限は 3 時間です


/tmp/session -amin +180 -exec rm -rf {} を見つけます ;

それを cron に入れて 10 分ごとに実行すれば完了です。


http://www.bkjia.com/PHPjc/486449.html

tru​​ehttp://www.bkjia.com/PHPjc/486449.html技術記事サーバーには比較的大きなトラフィックがあり、プログラムの必要性により、セッションの有効期限は 3 時間に設定されており、その結果、/tmp には 200,000 近くのセッション ファイルが蓄積されます。これにより、カーネルが大量の CPU を占有することになります...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。