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

PHP работает слишком медленно, всегда показывает «504 Gateway Time-out»

PHP работает слишком медленно, всегда показывает "504 Gateway Time-out"

My server spec:
Dual core ATOM 330 CPU
2GB RAM
Use nginx with PHP in fastcgi
use eaccelerator

CPU 74.3%id
RAM used: 350MB of 2GB

У меня много сайтов на моем сервере, где cron работает все время каждую минуту, даже несколько минут, двойной или тройной cron работает одновременно.

Все мои сайты cron тяжелые, обычно cron работает более одной минуты.

мой nginx.conf стал слишком большим, пока nginx не отказался запускаться из-за слишком большого количества сайтов в нем. это было решено увеличением server_names_hash_max_size. Я планирую добавить больше сайтов на свой сервер

Теперь при открытии моего веб-сайта всегда отображается 504 Gateway Time-out. Я тестировал множество настроек eaccelerator и PHP, но это 504 Gateway Time-out все еще бывает.

то 504 Gateway Time-out исчезнет, ​​когда cron отключен

Понятия не имею: это из-за нехватки мощности процессора?

И что я должен делать? обновить мой процессор?

-------- добавлено

это top для моего процессора только что:

Cpu(s): 17.5%us,  3.8%sy,  0.1%ni, 71.6%id,  6.9%wa,  0.1%hi,  0.1%si,  0.0%st

Эта ошибка nginx сообщает вам, что время ожидания PHP истекло.

Чтобы определить, что не так, нам нужно посмотреть, что на самом деле делает этот PHP-код.

Если ошибка сильно коррелирована с заданиями cron, и я предполагаю, что эти задания cron запускают сценарии PHP и / или конкурируют за те же ресурсы, которые использует ваш обычный PHP-код (возможно, БД или что-то еще), тогда вам следует начать ищу разногласия по этому поводу.

Что-то заставляет ваши сеансы PHP не завершать код и зависать - сосредоточьтесь на этом, и вы найдете свой ответ. (Также - настройте изящные страницы ошибок для этой ситуации - я думаю, что nginx позволяет вам это сделать!)

И что я должен делать? обновить мой процессор?

Очевидно, что нет - судя по вашей статистике, ваш процессор простаивает около 75%, так что, скорее всего, проблема не в этом.

Вы смотрели на использование ввода-вывода? Я бы положил деньги на предположение, что вашим процессам приходится ждать ввода-вывода и поэтому они занимают гораздо больше времени, чем обычно.

Бегать top и смотреть %wa в строке использования ЦП. Вот пример вывода с одного из моих серверов:

Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Если это %wa значение выше, чем, скажем, 20% или около того, это, скорее всего, ваша проблема.