Апач+Нжинкс, проблема 504

12
[Удален]
1888

Добрый день, уважаемые!

До вчерашнего дня на ВДСе стоял Аппач - естественно, всё тупило и жрало много памяти (вплоть до автокилла :)).

Вчера поставили связку Апач+Нжинкс - всё начало заметно шустрее бегать, средняя загрузка проца 10-20%, памяти около 500К (из гига).

Но начала изредка вылазить ошибка 504 Gateway Time-out :fire:

На сколько я понял, это Нжинкс не успевает получать от вышестоящего сервера (Аппача) динамику.

Мне саппорт благодаря пинку, объяснил дословно "таймаут нжинкса" :)

Только вот подскажите, где его вписать/отредактировать в nginx.conf - какие параметры вписать и какое хоть примерное значение...(я уже замучился лазить по http://sysoev.ru/nginx)

Спасибо заранее.

Himiko
На сайте с 28.08.2008
Offline
560
#1

http://sysoev.ru/nginx/docs/http/ngx_http_proxy_module.html#proxy_read_timeout

http://sysoev.ru/nginx/docs/http/ngx_http_proxy_module.html#proxy_send_timeout

http://sysoev.ru/nginx/docs/http/ngx_http_proxy_module.html#proxy_connect_timeout

Т.е. можете прописать глобально, прямо в разделе

http {

proxy_read_timeout 60;

proxy_send_timeout 60;

proxy_connect_timeout 60;

}

Соответственно таймаут чтения, посылки запроса и соединения.

60 - это значение "по умолчанию".

Профессиональное администрирование серверов (https://systemintegra.ru). Круглосуточно. Отзывы (/ru/forum/834230) Лицензии (http://clck.ru/Qhf5) ISPManager,VDSManager,Billmanager e.t.c. по низким ценам.
MS
На сайте с 23.07.2009
Offline
2
#2

скорее всего это

syntax: proxy_connect_timeout время

default: proxy_connect_timeout 60

context: http, server, location

Директива задаёт таймаут для соединения с проксированным сервером. Необходимо иметь в виду, что этот таймаут не может быть больше 75 секунд.

И скорее всего это не поможет. Тут прикол в том, что apach не успевает обработать запрос. Причина может быть в том, что физически сервер не успевает или все процессы папче висят в ожидании данных (тогда надо MaxClients у apache увеличить).

Администрирование серверов. Jabber: masterweb.spb@gmail.com, ICQ: 73736698
[Удален]
#3

Himiko, спасибо за грамотную консультацию - пока поставил 120, посмотрим чего будет.

masterweb.spb,

masterweb.spb:
И скорее всего это не поможет. Тут прикол в том, что apach не успевает обработать запрос. Причина может быть в том, что физически сервер не успевает или все процессы папче висят в ожидании данных (тогда надо MaxClients у apache увеличить).

- я об этом тоже думал. Сейчас стоит:

prefork.c:

StartServers 8

MinSpareServers 5

MaxSpareServers 20

ServerLimit 256

MaxClients 256

MaxRequestsPerChild 4000

worker.c:

StartServers 2

MaxClients 150

MinSpareThreads 25

MaxSpareThreads 75

ThreadsPerChild 25

MaxRequestsPerChild 0

Himiko
На сайте с 28.08.2008
Offline
560
#4

server-status смотреть нужно. По параметрам не определишь, сколько ему надо.

[Удален]
#5

объясните, где server-status искать...

вобщемто, вот вам картинка сервака:

MS
На сайте с 23.07.2009
Offline
2
#6

ага, мой любимый линукс, который показывает время процессора в состоянии waiting. В момент получения статистики не справлялся диск. Полезно посмотреть для apache server-status посмотреть, тогда все станет понятнее. На мой взгляд пора заняться выявлением узких мест в приложении (диск, процессор, память), и одним таймаутом уже не отделаться.

[Удален]
#7
masterweb.spb:
Полезно посмотреть для apache server-status посмотреть, тогда все станет понятнее.

как его смотреть?

MS
На сайте с 23.07.2009
Offline
2
#8

http://httpd.apache.org/docs/2.0/mod/mod_status.html

Загрузить нужный модуль, настроить его. Дальше заходим на нужный URL и смотрим, что делают процессы апаче.

Himiko
На сайте с 28.08.2008
Offline
560
#9
masterweb.spb:
http://httpd.apache.org/docs/2.0/mod/mod_status.html

Загрузить нужный модуль, настроить его. Дальше заходим на нужный URL и смотрим, что делают процессы апаче.

Как правило mod_status есть сразу.

Ищите в конфигурации Apache строки:

#<Location /server-status>

# SetHandler server-status

# Order allow,deny

# Deny from all

#</Location>

#ExtendedStatus On

Снимайте комментарий, т.е. удаляйте знаки "#" и немного подправьте:

<Location /server-status>

SetHandler server-status

Order allow,deny

Allow from all

</Location>

ExtendedStatus On

После этого перезапустите Apache.

Ну и смотрите статистику по http://ip-адрес/server-status

D
На сайте с 02.05.2009
Offline
68
#10
Allow from all

Не слишком ли?

http://www.differentlocal.ru (http://www.differentlocal.ru) http://differentlocal.habrahabr.ru (http://differentlocal.habrahabr.ru)
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий