Конфигурация nginx+apache

12
N
На сайте с 26.08.2012
Offline
2
2654

вчера переехал на VPS

CPU - 1 GHz

RAM - 1 Gb

Swap - 512 Mb

OS Centos 6

Apache 2.2.1

PHP 5.3.8

MySQL 5.5.16

установил предварительно nginx для отдачи статики

поставил также xcache

my.cnf вроде настроил оптимально.

по статистике процессор почти свободный

память тоже нормально. свап почти не используется

Всё что есть на сайте - это форум IPB.

Форум летает (пока стоит версия 2.0.0, планируется в ближайшие пару недель проапгрейдиться.

Вернее почти летает. Периодически вылетает 502 Bad Gateway

К вечеру людей стало больше и, следственно, ошибка вылетает значительно чаще

Лог медленных запросов ведётся, но там ничего серьёзного. Да и судя по наблюдениям, 502 вылетает на примитивных запросах

Смею полагать что памяти и процессора хватает, а bottleneck находится именно в nginx.

В логах nginx есть много вот такого добра: connection refused while connecting to upstream client

Пытался играться с настройками Nginx, пока безуспешно

Из того что понимаю я, у меня стоит просто связка nginx+apache

в сети много всякого о связках nginx-fastcgi- apache или php-fpm+nginx

рекомендуются ли такие связки для IPB?

что лучше? (если вообще имеет смысл ставить)

Интуиция подсказывает что нужно регулировать что то в этих конфигах чтобы не было ошибки 502.

Прилагаются конфиги nginx и апач.

Посоветуйте пожалуйста как это дело подрегулировать

Заранее благодарю за ваши советы

txt apache.txt
txt nginx.txt
Himiko
На сайте с 28.08.2008
Offline
560
#1

Проблема не в nginx. Он вам показывает, что не может плучить нормвльный ответ от apache. Посмотрите у apache значение MaxClients и попробуйте его увеличить.

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

Значение MaxClients присутствует в трёх модулях: ITK / PREFORK MPM / WORKER MPM

Все три вроде как закомментированы #.

Судя по top бегает процесс httpd.itk (6 или 7 штук постоянно). Это значит править надо в itk?

Там указано значение 128. ошибка начинает вылетать когда на форуме человек 50 и выше. меньше 50 тоже есть (но реже и относительно терпимо)

и что в данном случае считается "клиентом"? каждая страница в браузере открытая у посетителя (даже если само ничего не рефрешится)?

или при просматривании форума и отправки сообщений каждый MySQL запрос является "клиентом".

Прописано то MaxClients во всех секциях помногу, а 502 выскакивало при гораздо меньшем количестве посетителей

# prefork ITK

<IfModule itk.c>

StartServers 5

MinSpareServers 5

MaxSpareServers 15

ServerLimit 128

MaxClients 128

MaxRequestsPerChild 2000

</IfModule>

# prefork MPM

<IfModule prefork.c>

StartServers 8

MinSpareServers 5

MaxSpareServers 20

ServerLimit 256

MaxClients 256

MaxRequestsPerChild 4000

</IfModule>

# worker MPM

<IfModule worker.c>

StartServers 2

MaxClients 150

MinSpareThreads 25

MaxSpareThreads 75

ThreadsPerChild 25

MaxRequestsPerChild 0

</IfModule>

К первому посту я приложил конфиги апача и нгинкса.

Загляните если не трудно

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

Я бы лучше один раз посмотрел на сервер. Вариантов возникновения проблем не мало на самом деле. Может и память кончаться, может конфиг подргужаться, где параметры другие.

Я бы порекоммендовал написать нашим специалистам написать на systemintegra.ru (на сайте есть чат круглосуточный). Я думаю, что минут за десять определят точную причину

P
На сайте с 16.03.2009
Offline
144
#4

Посмотрите у вас мб настройки апача прописываются у вас в /etc/httpd/conf.d/swtune.conf

T
На сайте с 09.12.2011
Offline
55
tls
#5

Отключите для тестов nginx, смотрите /server-status на предмет числа запросов в секунду, читайте error_log, если клиентов не хватает, он скажет об этом. Проверять Апач надо на запросах php+mysql, просто php и статика. Если ошибки будут даже на статике - это одно, на php+mysql - другое. MaxClients=128 это много, учитывая, что это будет не статика, но для тестов пока можно оставить так.

Добавлено:

Timeout 1120

Жестко.

M
На сайте с 16.09.2009
Offline
278
#6

ТС, вам стоило бы начать с настройки мониторинга. Начинают отваливаться запросы к сайту - собираете статистику. Стоит обратить внимание на вывод top, mysql processlist, server-status апача.

Либо следите за сервером вручную - и соберите эту отладочную информацию сами. Покажите ее здесь - тогда вам могут подсказать что-то дельное (за рамками "обратитесь к нам").

Исходя из предоставленной вами информации:

1) Зачем вам ITK, если сайт *один*?! переходите на обычный prefork mpm с mod_php (только будьте внимательны к выставленным правам на файлы).

2) MaxClients=128 и больше - при характеристиках вашего vps просто безумны. Наоборот - уменьшайте, даже на порядок.

3) Обратите внимание на конфиг mysql. Судя по всему остальному - он "среднеарифметический", положенный для вас авторами дистрибутива.

Himiko:
Посмотрите у apache значение MaxClients и попробуйте его увеличить.

А вы не пробовали смотреть? :) Ведь всю информацию вам на глаза сунули в первом посту.

"Увеличить" MaxClients, который уже итак > 100 (в зависимости от используемого MPM апача, можно только гадать) - это (мягко говоря) неумный совет.

tls:
Отключите для тестов nginx

А это еще зачем - чтобы быстрее все накрылось? 🍿

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
N
На сайте с 26.08.2012
Offline
2
#7
myhand:
ТС, вам стоило бы начать с настройки мониторинга. Начинают отваливаться запросы к сайту - собираете статистику. Стоит обратить внимание на вывод top, mysql processlist, server-status апача.

Статистика собирается, актуальное из лога нгинкса я цитировал. Предположения что память и процессор непричём основаны на графиках.

myhand:
Исходя из предоставленной вами информации:
1) Зачем вам ITK, если сайт *один*?! переходите на обычный prefork mpm с mod_php (только будьте внимательны к выставленным правам на файлы).

Я этот ITK не ставил. Так шло дефолтом видимо. в top я постоянно вижу 6-7 процессов httpd.itk и каждый жрёт по 195 Мб памяти. Насчёт prefork mpm с mod_php я хочу проконсультироваться с профессионалами IPB насчёт целесообразности.

myhand:
2) MaxClients=128 и больше - при характеристиках вашего vps просто безумны. Наоборот - уменьшайте, даже на порядок.

Меня тоже такая рекомендация насторожила. Я читал где то что расчёт должен быть такой: оперативная память минус 30%и поделить на среднюю память одного процесс Апач.

получается (1024 Mb * 0.7)/195 Mb = 3.6

Или я что то не понял (скорее всего)

Или процессы эти жрут немеряно памяти

Или эта формула неправильная.

myhand:
3) Обратите внимание на конфиг mysql. Судя по всему остальному - он "среднеарифметический", положенный для вас авторами дистрибутива.

Вот ему как раз было уделено время и там я настроил оптимально. Периодически прогоняю mysqltuner.pl и корректирую конфиг.

Вопрос решён.

Ошибки выползали из за механизма антиddos

в iptables прописано исключение для самого сервера. Иначе попытки чрезмерного "общения" между апачем и нгинксом классифицировались как ddos

последние 3-4 часа ни одной 502 ошибки

M
На сайте с 16.09.2009
Offline
278
#8
nafigue:
Статистика собирается, актуальное из лога нгинкса я цитировал.

Это не "актуальное" - причин подобных ошибок может быть несколько.

nafigue:
Предположения что память и процессор непричём основаны на графиках.

Вот их и стоило бы привести. На будущее, естественно ;)

nafigue:
Насчёт prefork mpm с mod_php я хочу проконсультироваться с профессионалами IPB насчёт целесообразности.

Вместо IPB можно подставить любой сайт на PHP. Если проект один - itk вреден.

nafigue:
Я читал где то что расчёт должен быть такой: оперативная память минус 30%и поделить на среднюю память одного процесс Апач.

Ну да, как-то так. Нужно, чтобы максимальное число апачей не исчерпало памяти и оставило еще ее для других (mysql, etc).

nafigue:
Вот ему как раз было уделено время и там я настроил оптимально. Периодически прогоняю mysqltuner.pl и корректирую конфиг.

mysqltuner.pl, конечно, это хорошо - но лучше без фанатизма. Это все-таки тупой скрипт, а не безошибочные рекоммендации к исполнению.

Himiko
На сайте с 28.08.2008
Offline
560
#9
"Увеличить" MaxClients, который уже итак > 100 (в зависимости от используемого MPM апача, можно только гадать) - это (мягко говоря) неумный совет.

Я отвечал с планшета, поэтому аттачи в первом сообщении не видел.

Кроме того, настройки mpm могут перебиваться через инклуд в conf.d (и такое встречается)

xfes.ru
На сайте с 21.06.2010
Offline
20
#10

Пишите на skype - xfes.support - оптимизируем сервер бесплатно, за ~30 минут. Опыт обнаружения узких мест и оптимизации производительности VDS с сайтами у нас очень большой.

Виртуальный хостинг (http://xfes.ru/m/hosting/info/hosting), аренда Linix VPS (http://xfes.ru/m/hosting/info/vps) и ESXi VDS (http://xfes.ru/m/hosting/info/vds), игровые сервера (http://xfes.ru/m/hosting/info/game).
12

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