У меня есть приложение (Magento) с абстрактным уровнем хранения сеанса. Я пытаюсь представить, как лучше всего хранить сеансы.
База данных mysql? Я думаю о выделенной базе данных с очень большим innodb_buffer_pool_size, так что это в основном похоже на кэш ОЗУ с резервным копированием диска. Я думаю о том, чтобы иметь отдельную БД только для сеансов и разместить другие материалы БД на отдельном сервере БД / БД.
Memcache? Это здорово, но меня немного беспокоит, что произойдет, если сервер выйдет из строя? Я бы потерял этот раздел сеансов из-за сбоя, потому что, насколько я понимаю, Memcache не распространяется. Могу я сделать это дистрибутивом? (Мне только что сказали, что я могу использовать модуль pecl memcache> = 3
tmpfs для хранения файлов в памяти? Это работает, но мне пришлось бы синхронизировать сеанс записи со всеми другими серверами, используя rsync или что-то, что определяет, когда запись происходит в этой папке. Я уверен, что для этого должно что-то существовать.
Другое решение, о котором я не думаю? Люблю идеи.
Спасибо!
Memcache? Это здорово, но меня немного беспокоит, что произойдет, если сервер выйдет из строя? Я бы потерял этот раздел сеансов из-за сбоя, потому что, насколько я понимаю, Memcache не распространяется. Могу я сделать это дистрибутивом? (Мне только что сказали, что я могу использовать модуль pecl memcache> = 3
я использую перекэшированный. Он запускается, как показано ниже:
на сервере 1:
memcached -d -p 11211 -u memcached -m 64 -c 1024 -P
/var/run/memcached.pid -x <server2_ip>
на сервере 2:
memcached -d -p 11211 -u memcached -m 64 -c 1024 -P
/var/run/memcached.pid -x <server1_ip>
Конфигурация расширения PHP Memcache:
extension=memcache.so
memcache.allow_failover = 1
memcache.redundancy = 1
memcache.session_redundancy=2
memcache.hash_strategy = consistent
И обработчик сеанса в php.ini
:
session.save_handler = memcache
session.save_path="tcp://ip1:11211, tcp://ip2:11211"