2010-08-23 4 views
3

У нас возникла проблема с сеансом PHP, когда APC включен на нашем сервере.Проблемы с сеансом при включении APC

Приложение прекрасно работает без APC. Однако, поскольку мы включили APC, сеансы, похоже, смешиваются, когда сервер испытывает большую нагрузку, то есть пользователи случайно регистрируются в качестве другого. Когда мы отключили APC, все возвращается к норме. Мы не можем найти никого с той же проблемой, кроме связанной с этим ребята (set-cookie кэшируется в MS ASP): http://msdn.microsoft.com/en-us/magazine/cc163577.aspx#S2

У кого-нибудь еще есть схожая ситуация? Можете ли вы порекомендовать любые предложения?

PS: У нас есть все наши сеансы, обрабатываемые файлами в php.ini. Мы также запускаем apache2.

+0

FWIW У меня никогда не было проблем с APC/сеансами независимо от нагрузки – symcbean

+0

Какой обработчик сеанса вы используете? Какая версия PHP/APC? – Matthew

+0

Мы используем PHP версию 5.2.4 – tanvach

ответ

0

ну, пожалуйста, убедитесь, что apc действительно смешивает данные ... Единственное возможное, что я могу придумать, когда это может произойти, - это когда оно заполняется и выполняет stackoverflow. , пожалуйста, проверьте использование, а maby увеличьте размер кеша.

+0

Мы уверены, что это так, хотя возможно, что это ошибка, которая возникает только тогда, когда два пользователя одновременно обращаются к функции. Благодаря тому, что APC включен, мы можем обслуживать больше req/s, следовательно, увеличивает вероятность их выполнения. – tanvach

0

Возникла проблема, связанная с APC, когда пользовательские объекты обработки сеанса будут уничтожены до сохранения данных сеанса. Он может быть не связан с вашей проблемой, но явным вызовом session_write_close до того, как обычное закрытие PHP исправляет это.

Ваша проблема звучит немного иначе, но я могу подтвердить, что проблемы существуют.

+0

Спасибо, мы также посмотрим на это. – tanvach

0

Просто, чтобы закончить пост, мы добились успеха в снижении этой проблемы с тремя вещами:

1) Мы сделали дополнительные проверки, чтобы убедиться, что IP сопоставляется с идентификатором сеанса, и выход из системы пользователя в противном случае. Затем мы могли бы использовать это, чтобы отслеживать, как часто возникает проблема.

2) Мы переключились на XCache и сразу увидели меньшее количество запутанных идентификаторов сеанса. Однако при очень большой нагрузке проблема снова возвращает свою уродливую голову.

3) Затем мы удваиваем память для Xcache в конфигурации php (xcache.size и xcache.var_size), и теперь проблема исчезла.

Таким образом, мы подозреваем, что проблема с APC или Xcache закончилась. Мы все еще ждем, будет ли это постоянное решение.

2

У нас есть аналогичная проблема. На данный момент APC является лишь основным подозреваемым, потому что его трудно воспроизвести.

Мы используем Zend Framework w/session management, и теория заключается в том, что код Zend кэшируется в APC, а когда система находится под серьезной нагрузкой, код использует ранее сохраненный SID вместо текущего.

Наша защита заключается в том, чтобы сохранить идентификатор сеанса внутри данных сеанса и сравнить значения при извлечении сеанса. Если идентификаторы разные, мы уничтожаем сессию и завершаем ее.

Смежные вопросы