2017-01-27 3 views
9

최근 우리 Memcached 노드 중 하나가 죽은 (Memcached를 Memcached 공급자로 사용하기 때문에) PHP 웹 응용 프로그램을 몇 분 동안 사용할 수 없게되었습니다. Heroku/PHP 5.6 환경에서 Failover 지원으로 Memcached를 설정하는 방법은 무엇입니까?

이 우리의 user.ini 구성 일 (Heroku가 당신이 당신의 구성을 정의하는 장소로 user.ini 사용),하지만 분명히 페일 오버를 지원하지 않았다

session.save_handler=memcached 
session.save_path=${MEMCACHIER_SERVERS} # I understand this is redundant, but I just kept it as-is because I didn't write the original user.ini 
session.save_path="PERSISTENT=SFSESSID ${MEMCACHIER_SERVERS}" 
session.gc_maxlifetime=1209600 
session.gc_probability=1 

memcached.sess_binary=1 
memcached.sess_sasl_username=${MEMCACHIER_USERNAME} 
memcached.sess_sasl_password=${MEMCACHIER_PASSWORD} 

우리의 새로운 user.ini 구성을 목표로 123.45678.us-east-1.heroku.prod.memcachier.com:11211,123.45678.us-east-1.heroku.prod.memcachier.com:11211 : 페일 오버 기능

MEMCACHIER_SERVERS ENV var에는 다음과 같습니다
session.save_handler=memcached 
session.save_path="PERSISTENT=SFSESSID ${MEMCACHIER_SERVERS}" 
session.gc_maxlifetime=1209600 
session.gc_probability=1 

memcached.sess_sasl_username=${MEMCACHIER_USERNAME} 
memcached.sess_sasl_password=${MEMCACHIER_PASSWORD} 
memcached.sess_binary=1 
memcached.sess_number_of_replicas=1 
# I also tried memcached.sess_consistent_hash=1, to no avail 

을 제공합니다. 나는 이것이 우리가 2 개의 노드를 가지고 있음을 의미한다고 생각한다.

새로운 구성으로 인해 발생하는 문제는 시간 초과이며 PHP 세션 기능 (session_start(), session_write_close())과 관련하여 많은 오류가 있습니다.

왜 그런 일이 발생합니까?

우리는 PHP 코드에서 Memcached를 전혀 사용하지 않고 세션 저장 엔진으로 만 사용한다는 것을 기억하십시오.

Memcachier 지원팀에 연락을 시도했지만 고객 담당자가 권장 PHP 코드 만 제공 할 수 있습니다 (필요하지 않음).

+0

환경에 대해 잘 모르시겠습니까? 프록시를 추가하여 높은 가용성을 보장하는 것이 어떨까요? – Yarco

+0

Memcachier SaaS가이를 수행합니다. –

+0

'session.gc_divisor'의 값은 무엇입니까? 어쩌면 세션 가비지 수집이 너무 자주 시작 되었습니까? –

답변

1

현상금이 만료되어 질문이 곧 닫히기 때문에 @ jdotjdot의 제안으로 가서 Memcachier에서 MemcachedCloud addon으로 전환 할 것입니다.

+0

보드에 오신 것을 환영합니다 :) –