memcached と PHP ... セッションで大きな遅延が発生する

memcached と PHP ... セッションで大きな遅延が発生する

私は、Unbuntu 10.04 で構築され、php-fastcgi、nginx、memcached を実行している新しいサーバーに取り組んでいます。

phpinfo() スクリプトは、テストの memcached スクリプトと同様に、正常に読み込まれて動作します。セッションを使用するスクリプトの場合、ページの読み込み時間は急激に長くなります。

--- memcached.ini ---
extension=memcached.so
memcache.hash_strategy = "consistent"
memcache.max_failover_attempts = 100
memcache.allow_failover = 1
session.save_handler = memcached
session.save_path = "tcp://127.0.0.1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"

他の設定を確認する必要がある場合はお知らせください。

答え1

問題は、memcache.so と memcached.so 間の session.save_path 構文にあります。

extension=memcache.so
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"

extension=memcached.so
session.save_handler = memcached
session.save_path = "127.0.0.1:11211"

memcache のものにはプロトコルがあることに注意してください。memcached のものにはプロトコルがありません。

また、ロードしようとしている .so が実際にあることを確認してください。これらは、apt-get または yum または使用するフレーバーを介して 2 つの別々のパッケージになります。

間違ったモジュールをロードしたり、誤った構文を使用したりして破損が発生すると、セッション メカニズムを使用しようとする間に PHP で 30 秒のロード遅延が発生し、最終的にタイムアウトになります。

誰かの時間を節約できれば幸いです。 ;-)

答え2

php の memcached は php の memcache ではありません。これらは別の実装です。

単純な「session.save_path = "127.0.0.1:11211"」では何が得られますか? または

session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"

save_handler に 'd' がないことに注意してください。

答え3

PHP 拡張子を memcached.so から memcache.so に変更します。これですべての遅延問題が解決します。Ubuntu のバグなのか、私の設定のバグなのかはわかりませんが、今は問題なく動作します。

関連情報