Я вижу очень странное поведение, исходящее из компонента менеджера сеансов Symfony2. В частности, функция SessionHandlerProxy :: read () в моей рабочей среде иногда очень медленная.
Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy::read
Я использую Apache2, на Amazon EC2, работающем под управлением Ubuntu, с хранилищем сеансов Symfony2 по умолчанию (не Redis, или с чем-то похожим), хотя мне интересно, должен ли я быть. У меня установлен NewRelic для отслеживания моих транзакций, которые сообщают следующее:
Медленные реакции прерывисты, и я не заметил никакой заметной корреляции между запросами / мин и медленным временем чтения сеанса. Я в тупике, какие-то идеи, что я могу попробовать?
Я столкнулся с чем-то похожим на проект. Я определил его, когда мы переключились на redis для обработки сеанса (мы переключились на обработчик файловой системы по умолчанию для PHP, проблема все еще возникает с перерывами).
Скорее всего, метод SessionHandlerProxy :: read () заблокирован из сеанса, и процесс ожидает разблокировки сеанса.
Захват сеанса – это хорошо , поскольку он предотвращает условия гонки в php. Так что, вероятно, происходит то, что другой запрос в настоящее время обращается к сеансу и не освобождает его как можно скорее. Решение, найденное с помощью моих навыков google fu, вызывает обработчик $ session-> save (), как только вы закончите сеанс, который intern вызывает session_write_close () (это разблокирует сеанс для следующего запроса).
Надеюсь, это поможет!
Документация API Symfony для сеанса: Сохранить ()
Вот исходный вопрос переполнения стека (хотя 5 лет назад).