Назад | Перейти на главную страницу

Процессы PHP продолжают загружать мой сервер, поглощая процессор и заставляя его зависать :(

У меня есть сервер 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)

Кажется, это контролирует ситуацию и поддерживает сервер!

Большое спасибо за вашу помощь :)

Волна