у нас есть Nginx / 1.6.2 работает с php5-fpm (5,6) на Debian 8 система.
В последние дни мы получили более высокую нагрузку, чем обычно, из-за того, что на наших серверах было больше пользователей. С большинством посетителей, приходящих в вечерние часы с 6 вечера до полуночи.
Спустя пару дней два разных сервера, на которых выполнялась вышеуказанная установка, показывали очень медленную скорость отклика в течение нескольких часов. В Мунине мы увидели, что там вдруг сотни соединений nginx в состоянии «запись» где раньше было только около 20 одновременно.
Мы не получаем никаких ошибок, кроме тайм-аут соединения на удаленных хостах при попытке доступа к этим серверам. Все логи, которые я видел, были просто нормальными.
Проблема может быть исправлена перезапуском php5-fpm.
мой вопрос теперь: почему вдруг сотни процессов утверждают, что пишут? Есть какая-то известная проблема или, возможно, пропущен параметр конфигурации, который может вызвать это?
Вот полный список симптомы мы видим:
Для настройки:
как указано выше. Мы используем встроенный кэш опкодов Zend, APCu для кеша некоторых пользовательских переменных, один из серверов запускает экземпляр memcache (который отлично работает в течение всей проблемы), а другой — версию Redis, которая также работает нормально, пока проблема возникает.
Может ли кто-нибудь пролить свет на проблему?
Спасибо!
Мы нашли проблему: APCu кажется нестабильным с PHP 5.6.
Подробности:
Мы использовали xhprof для профилирования запросов, когда сервер работал медленно (см. вопрос), и заметили, что APCu занимает> 100 мс на операцию чтения / записи. Очистка переменных APCu не помогла. Все остальные части кода имели нормальную скорость.
Мы полностью отключили использование APCu, и система была стабильной с тех пор.
Похоже, что эта версия APCu нестабильна при загрузке с PHP 5.6. По крайней мере, для нас.
У нас была та же проблема, и причина в том, что данные в Redis были больше, чем «maxmemory», поэтому redis не смог записать больше данных. Я мог войти в систему с помощью redis-cli, но не смог установить значение, если у вас возникла эта проблема, вы можете войти в redis с помощью redis-cli и попытаться установить что-то, если память redis заполнена, вы получите ошибку.