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 또는 사용하는 맛을 통해 두 개의 별도 패키지입니다.

잘못된 모듈을 로드하거나 잘못된 구문을 사용하여 중단되면 세션 메커니즘을 사용하려고 시도하는 동안 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 버그인지 설정 버그인지 확실하지 않지만 지금은 훌륭하게 작동합니다.

관련 정보