У меня есть сервер Debian Squeeze Lighttpd с PHP и MySQL, а также с настроенными XCache и Varnish.
Я новичок в этом, но изо всех сил старался решить эту проблему, но безуспешно.
Независимо от того, использую ли я Lighttpd, Nginx, XCache или APC, проблема остается.
В основном сервер отлично справляется с обработкой PHP, ОЗУ выглядит нормально и т.д. Затем внезапно кажется, что он останавливается, и процессы PHP-CGI (или FPM) складываются и складываются, поглощая всю мощность моего четырехъядерного процессора и из-за чего весь сервер почти полностью перестает отвечать.
У меня на сервере 4 сайта, 3 из которых с низким трафиком и спросом, а один довольно интенсивный и загруженный. Так что почти наверняка причиной этого является сайт. Однако у нас этот сайт работал на этом (VPS) сервере раньше с настройкой cPanel (чего я хочу избежать сейчас из-за стоимости и предпочтений Debian и т.
Даже когда я удаляю весь AJAX с интенсивного сайта и уменьшаю трафик, он все равно это делает.
Также в журналах PHP, MySQL или lighttpd нет явных ошибок (я заставил их все работать и регулярно их проверяю).
Вот PHP-часть моего lighttpd.conf:
http: // pastebin.com/JwbFJ4YQ
(максимальное количество запросов установлено на 500, как рекомендуется Вот, не уверен на 100%, что это правильно, но, конечно, проблема все равно произошла в nginx!)
и вот мой php.ini:
http: // pastebin.com/XHH0YMTd
и мой MySQL my.cnf:
http: // pastebin.com/YPFjdfmf
Есть предположения? Для XCache выделено только 64 МБ, но они рекомендовали начать с этого, и, похоже, он никогда не использует все это в своей административной CP (что я заметил). И Varnish, и XCache работают нормально, я думаю, и сайты реагируют ОЧЕНЬ быстро, пока не произойдет это событие блокировки (что предсказуемо всегда).
Исправлено ... Думаю!
Решением было реализовать тайм-ауты везде, где это возможно, в PHP и MySQL.
Я не буду вдаваться в подробности, но сделаю несколько поисков в Google, и вы их найдете.
Это такие вещи, как:
mysql.connect_timeout (в php.ini)
и
Interactive_timeout (Я установил 10)
wait_timeout (Я установил 20)
connect_timeout (Я установил 20)
в файле MySQL my.cnf (я думаю, что все они для my.cnf)
Кажется, это контролирует ситуацию и поддерживает сервер!
Большое спасибо за вашу помощь :)
Волна