сессия — Как настроить Memcached с поддержкой отработки отказа в среде Heroku / PHP 5.6?

Недавно наше веб-приложение на PHP стало недоступным в течение нескольких минут после того, как один из наших узлов Memcached умер (мы используем Memcachier в качестве поставщика 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 конфигурация, которая предназначена для обеспечения возможности восстановления после отказа

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

MEMCACHIER_SERVERS env var выглядит так: 123.45678.us-east-1.heroku.prod.memcachier.com:11211,123.45678.us-east-1.heroku.prod.memcachier.com:11211, Я думаю, что это означает, что у нас есть 2 узла.

Проблема, которую мы получаем с новой конфигурацией, заключается в тайм-аутах и ​​множестве ошибок, связанных с функциями сеанса PHP (session_start(), session_write_close()).

Почему это происходит?

Помните, что мы вообще не используем Memcached внутри нашего PHP-кода, а только как механизм хранения сессий.

Я пытался связаться со службой поддержки Memcachier, но представитель заказчика мог предоставить только рекомендованный код PHP (который нам не нужен).

9

Решение

Поскольку срок действия награды истек, и вопрос скоро будет закрыт, я собираюсь продолжить с предложением @ jdotjdot и переключиться с Memcachier на дополнение MemcachedCloud.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]