セッションは、コンピューター、特にネットワークアプリケーションでは「セッション」と呼ばれます。
プログラムの必要性により、サーバーのトラフィックが比較的多く、セッションの有効期限が 3 時間に設定されているため、/tmp の下に約 200,000 のセッション ファイルが蓄積されます。これにより、カーネルによる CPU 使用率が急激に増加します。セッションの読み書きでは、多数の小さなファイルがランダムに読み書きされ、それらが 1 つのディレクトリに集中するため、iowait も急激に増加します。
まず、セッションをメモリに入れることを検討してください
最も簡単な方法は、/tmp を tmpfs ファイル システム、つまりメモリ内にマウントすることです
2 番目のステップは、セッションを別のディレクトリに保存することです
php自体はセッションのマルチレベルハッシュをサポートしています
php.iniで、
<ol class="dp-c"><li class="alt"><span><span>session.save_path = /tmp; </span></span></li></ol>
を
<ol class="dp-c"><li class="alt"><span><span>session.save_path = </span><span class="string">"2;/tmp/session"</span><span> </span></span></li></ol>
に変更することは、セッションを/tmp/sessionフォルダーに保存することを意味し、それはUse 2とhashです。
保存して終了し、3番目のステップが完了したらphpを再起動します
3番目のステップ、セッションストレージフォルダーを作成します
phpはこれらのフォルダーを自動的に作成しませんが、いくつかの作成フォルダーはソースファイルスクリプトで提供されます。次のスクリプトも使いやすいです
<ol class="dp-c"> <li class="alt"><span><span>I=</span><span class="string">"0 1 2 3 4 5 6 7 8 9 a b c d e f"</span><span> </span></span></li> <li> <span class="keyword">for</span><span> acm in </span><span class="vars">$I</span><span>; </span> </li> <li class="alt"> <span class="keyword">do</span><span> </span> </li> <li> <span class="keyword">for</span><span> x in </span><span class="vars">$I</span><span>; </span> </li> <li class="alt"> <span class="keyword">do</span><span> </span> </li> <li> <span class="func">mkdir</span><span> -p /tmp/session/</span><span class="vars">$acm</span><span>/</span><span class="vars">$x</span><span>; </span> </li> <li class="alt"><span>done; </span></li> <li><span>done </span></li> <li class="alt"> <span class="func">chown</span><span> -R nobody:nobody /tmp/session </span> </li> <li> <span class="func">chmod</span><span> -R 1777 /tmp/session </span> </li> </ol>
/tmp はメモリに使用されるため、サーバーを再起動すると、その中のすべてのファイルが失われるため、上記のスクリプトを /etc/rc.local に追加する必要があります。 php
4 番目のステップであるセッションのリサイクル
セッションは session.gc_maxlifetime 後に期限切れになりますが、時間の経過とともにすぐには削除されず、/tmp 内の大きなスペースを占有します。具体的な削除アルゴリズムを勉強するのが面倒です。次のコマンドは、期限切れのセッションを削除できます。ここで定義する有効期限は 3 時間です。
<ol class="dp-c"><li class="alt"><span><span>find /tmp/session -amin +180 -</span><span class="func">exec</span><span> rm -rf {} ; </span></span></li></ol>
cronに入れて10分ごとに実行すれば完了です。
この記事では、セッションのハッシュ化と期限切れのリサイクルを 4 つのステップで紹介します。