PHP Cluster и файлы сессий

Labutin

Новичок
Имеющееся хозяйство.
Два PHP сервера
Балансировщик
Файловое хранилище, подключенное к обоим серверам по iSCSI. Файловая система OCFS2.
Схема PHP кластера тривиальна - балансировщик в соответствии со своей логикой переправляет каждый запрос на один из PHP серверов. Запросы одного и того же пользователя могут уйти на разные сервера. Сразу скажу, что параметр аля ip_hash в nginx нам не подходит и всегда есть вероятность, что запрос пользователя уйдет на другой PHP сервер. Как следствие, нам нужны общие сессии на обоих PHP серверах.
Дальше гуглятся в 99% случаев два решения:
- сессии в базе данных
- сессии в memcached
Добавляю еще одно требование - да, нам жизненно важна блокировка сессий (при хранении сессий в файлах она есть по умолчанию) и переписать проект просьба не предлагать. memcached уже отпадает, т.к. там нет блокировок (или что-то изменилось?). И еще нам важно сохранение сессии при ребуте серверов. Тем более чистый вариант с memcached не подходит. Читал про гибриды - memcached с регулярным сбрасыванием сессий в MySQL. Думаем над этим решением.

Но мы решили хранить сессии на общем файловом хранилище. Ведь оно есть. И оно общее. И сессии там блокируются (проверено, работает).
Но есть одно огромное НО! Под реальной нагрузкой не сразу, но через несколько минут вдруг все PHP процессы на обоих серверах встают на ожидании разблокировки сессии. Стоит один из PHP серверов вывести из игры, как на втором все разблокируется и он весело в одно лицо обслуживает клиентов.

Собственно вопрос: есть у кого реальный опыт хранение сессий именно на общем файловом хранилище? У вас подобная проблема возникала? Как решали? Может быть мы в принципе что-то делаем не так?

P.S.
Oracle Linux Server release 6.4
Linux php01-dc 2.6.39-400.21.1.el6uek.x86_64 #1 SMP Thu Apr 4 03:49:00 PDT 2013 x86_64 x86_64 x86_64 GNU/Linux
nginx + php-fpm
PHP Version 5.3.23
 

fixxxer

К.О.
Партнер клуба
memcached уже отпадает, т.к. там нет блокировок
add+cas

Под реальной нагрузкой не сразу, но через несколько минут вдруг все PHP процессы на обоих серверах встают на ожидании разблокировки
классический deadlock

Может быть мы в принципе что-то делаем не так?
используете сетевые ФС с блокировками, не имея ни малейшего представления о том как это работает
 
Сверху