私は現在、パフォーマンスに関してより正確に大きな問題に直面しています。大量のファイル(+100.000)を含むフラットセッションフォルダーでの大量のI/Oによって生成された負荷。
sessionfiles / htdocsフォルダーは管理対象ストレージにあります-2つの別々のサーバー(ロードバランサーの背後)がnsf-mountを介してこれらのファイル(apache2)を使用し、同じセッションフォルダーに一度にアクセスしています(永続性を維持するため)。
残念ながら、このプロジェクトは頻繁に行われ、大量のセッションファイルを生成しています。2時間のansmax_lifetimeを使用しても、+ 100.000セッションファイルを生成します。これは、IOノードにとって非常に重要です。
これらのセッションをサブフォルダーに動的に分割する可能性はありますか?たとえば、sess_1*を/tmp / sessions / 1に、sess_2を/ tmp / sessions / 2に含むすべてのセッションファイルなど?このアプローチでは、ストレージ/ IOノードは各フォルダーを約10.000処理するだけで済み、ガベージコレクションが高速化され、IOの負荷を防ぐことができます。
PHP(session.save_path)ドキュメントからの抜粋を見つけました。
http://de3.php.net/manual/en/session.configuration.php#ini.session.save-path
このディレクティブには、セッションファイルが分散されるディレクトリレベルの数を決定するオプションのN引数があります。たとえば、「5; / tmp」に設定すると、セッションファイルと/ tmp/4のような場所が作成される可能性があります。 / b / 1 / e / 3/sess_4b1e384ad74619bd212e236e52a5a174If。Nを使用するには、使用する前にこれらのディレクトリをすべて作成する必要があります。これを行うための小さなシェルスクリプトがext/sessionに存在します。これは、mod_files.shと呼ばれ、Windowsバージョンはmod_files.batと呼ばれます。また、Nが使用され、0より大きい場合、自動ガベージコレクションは実行されないことに注意してください。詳細については、php.iniのコピーを参照してください。また、Nを使用する場合は、区切り文字(;)がphp.iniのコメントにも使用されるため、必ずsession.save_pathを「引用符」で囲んでください。
誰かが以前にこれをphpで実装していて、このmod_files.shを使用してサブフォルダー内のセッションファイルを処理するためのサンプルphpコードを提供してくれますか?
残念ながら、その文書化はかなり不十分です...