これらすべての答えを補完するものとして:
セッションをデータベースに保存する場合は、PHPでのセッションのガベージコレクションが実際にアクティブ化されていることを確認してください(Debianのようなディストリビューションではそうではなく、独自のcronでセッションをガベージすることを決定し、php.iniを変更して起動しないようにしましたgcなので、とを確認してくださいsession.gc_probability
)session.gc_divisor
。データベース内のセッションストレージの主な問題は、データベース内で多くの書き込みクエリと多くの競合するアクセスを意味することです。これは、MySQLのようなデータベースサーバーにストレスを与える優れた方法です。したがって、別のソリューションを使用するIMHOの方が優れています。これにより、読み取り/書き込みの比率がより良いWebデータベースの方法で維持されます。
また、ファイルストレージシステムを維持し、 NFSを使用してサーバー間でファイルディレクトリを共有することもできます。以外session.save_path
のものを使用するように設定を変更します/tmp
。しかし、NFSは、定義上、ディスクを使用する最速の方法ではありません。高速アクセスにはmemcachedまたはmongodbをお勧めします。
サーバー間で共有する必要があるのが認証だけである場合は、実際のセッションストレージを共有する代わりに、認証資格情報を共有できます。SOのOpenIdシステムと同様に、これはSSOと呼ばれるものです。Webパーツには、OpenIdからCASまでのいくつかのソリューションがあります。、 その他。データがクライアント側(ajax、ESIゲート)でマージされる場合、サーバー側での共通セッションデータストレージは実際には必要ありません。これにより、影響を受ける5つのWebアプリケーションのうち3つが共有セッションで同時にデータを書き込むことを回避できます。他のセッション共有手法(データベース、NFS、さらにはmemcached)は、負荷分散ツールがサーバー間でシーケンシャルHTTPリクエストを送信できるため、主に複数のサーバー間でデータを共有するために使用されますが、実際にデータの並列収集を意味する場合は、実際にSSOを研究します。