60

Load Balancer の背後にある 2 つの Web サーバーで作業していますが、Sticky Sessions を有効にして、ユーザーを 1 つの特定の Web サーバーに保持することができます。これは機能します。

PHP セッションと MemCache について読んでいます。私が読んだことは少し混乱していると言わざるを得ません。いくつかのページはそれが良い考えであり、他のページはその反対です.

質問:

  1. PHPセッションをmemcacheに保持することは可能ですか?
  2. memcache よりもスティッキー セッションを使用する方が良いですか?
  3. memcache の php セッションの問題は何ですか - 注: 十分なキャッシュを取得できます (Amazon は拡張可能です)。
4

4 に答える 4

68

1: はい。また、PHP セッションを Memcached に保存することを強くお勧めします。理由は次のとおりです。

Memcached は、データベースやファイルシステムから頻繁にアクセスされるデータの小さなチャンクを格納するのに最適です。

Memcached は、セッション専用に設計されています。もともとは livejournal.com の主任開発者の発案によるもので、後にユーザーの投稿のコンテンツをキャッシュするためにも使用されました。メリットはすぐに現れました。ほとんどのアクションはメモリ内で行われていました。ページの読み込み時間が大幅に改善されました。

ありがたいことに、PHP と Apache には、Memcached でセッションを処理するための簡単な実装があります。いくつかのシェルコマンドで簡単にインストール

Debian の例:

sudo apt-get -t stable install php7.4-memcached

php.ini 設定を次のようなものに変更します。

( https://www.php.net/manual/en/memcached.sessions.phpから取得)

 session.save_handler = memcached
 ; change server:port to fit your needs...
 session.save_path = "localhost:11211"

キーは session.save_path です

サーバー上の相対ファイル パスを指しなくなります。APCが言及されました-プログラムで使用される.phpファイルのキャッシュ用のAPC。APC と Memcached は IO を大幅に削減し、Apache/Nginx を画像などのサーバー リソースに解放します。

2: いいえ

3: Memcachedを使う根本的なデメリットはデータの揮発性

Memcached では、セッション データは永続的ではありません。そのため、サーバーがクラッシュすると、メモリ内のすべてのデータが失われます。全員が再度ログインする必要があります。

そして、メモリ消費があります...

注意: セッションはメモリに保存されます。Web サイトが多数の同時ユーザーを処理している場合は、より多くのメモリを割り当てるために多少の追加料金が必要になる場合があります。

于 2012-12-19T05:57:48.340 に答える
9

1. はい、PHP セッションを memcached に保持できます。

memcache 拡張機能には、起動して実行するための構成がほとんど必要ないセッション ハンドラーも付属しています。http://php.net/manual/en/memcached.sessions.php

2. Memcache/スティッキー セッション

どれが「より良い」かはよくわかりません。これは、「場合による」答えの1つになると思います。おそらく、負荷分散の理由によって異なります。少数のユーザーがそれぞれ多くの負荷を引き起こしている場合、または多数のユーザーがそれぞれ小さな負荷を引き起こしている場合。

3. Memcache の短所

セッション ストレージに memcache を使用することには、おそらく 2 つの主な短所があります。

まず、揮発性です。これは、memcached インスタンスの 1 つが再起動/クラッシュした場合などに、そのインスタンスに保存されているすべてのセッションが失われることを意味します。従来のファイル ベースのセッションを使用していた場合は、サーバーが戻ったときにまだ存在します。

第二に、おそらくより関連性があるのは、memcached は永続性を保証するものではなく、キャッシュとしてのみ使用されることです。理由を問わず、いつでも memcached からデータを消去できます。実際には、データをパージする必要がある唯一の理由は、キャッシュがサイズ制限に近づいている場合です。最も最近アクセスされたデータが除外されます。繰り返しますが、これは問題ではないかもしれません。ユーザーのセッションが古い場合、おそらくユーザーがいなくなっているためですが、それはニーズによって異なります。

于 2012-12-19T05:58:04.570 に答える
2

私の見解では、Memcached にセッションを保存することはお勧めしません。セッションが消えた場合、多くの場合、ユーザーはログアウトされます。キャッシュの一部が消えた場合、またはハードウェアのクラッシュが原因で、ユーザーに顕著な痛みを引き起こすことはありません。 memcached サイト、「memcached は高性能の分散メモリ オブジェクト キャッシング システムであり、本質的に汎用的ですが、データベースの負荷を軽減することで動的な Web アプリケーションを高速化するために使用することを目的としています。」そのため、アプリケーションの開発中は、Memcached サーバーでデータが見つからない場合にデータを取得するためのフォールバック メカニズムが必要であることに注意してください。

于 2013-10-17T13:22:29.540 に答える