- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева

Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
вчера переехал на 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 и апач.
Посоветуйте пожалуйста как это дело подрегулировать
Заранее благодарю за ваши советы
Проблема не в nginx. Он вам показывает, что не может плучить нормвльный ответ от apache. Посмотрите у apache значение MaxClients и попробуйте его увеличить.
Значение 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>
К первому посту я приложил конфиги апача и нгинкса.
Загляните если не трудно
Я бы лучше один раз посмотрел на сервер. Вариантов возникновения проблем не мало на самом деле. Может и память кончаться, может конфиг подргужаться, где параметры другие.
Я бы порекоммендовал написать нашим специалистам написать на systemintegra.ru (на сайте есть чат круглосуточный). Я думаю, что минут за десять определят точную причину
Посмотрите у вас мб настройки апача прописываются у вас в /etc/httpd/conf.d/swtune.conf
Отключите для тестов nginx, смотрите /server-status на предмет числа запросов в секунду, читайте error_log, если клиентов не хватает, он скажет об этом. Проверять Апач надо на запросах php+mysql, просто php и статика. Если ошибки будут даже на статике - это одно, на php+mysql - другое. MaxClients=128 это много, учитывая, что это будет не статика, но для тестов пока можно оставить так.
Добавлено:
Жестко.
ТС, вам стоило бы начать с настройки мониторинга. Начинают отваливаться запросы к сайту - собираете статистику. Стоит обратить внимание на вывод top, mysql processlist, server-status апача.
Либо следите за сервером вручную - и соберите эту отладочную информацию сами. Покажите ее здесь - тогда вам могут подсказать что-то дельное (за рамками "обратитесь к нам").
Исходя из предоставленной вами информации:
1) Зачем вам ITK, если сайт *один*?! переходите на обычный prefork mpm с mod_php (только будьте внимательны к выставленным правам на файлы).
2) MaxClients=128 и больше - при характеристиках вашего vps просто безумны. Наоборот - уменьшайте, даже на порядок.
3) Обратите внимание на конфиг mysql. Судя по всему остальному - он "среднеарифметический", положенный для вас авторами дистрибутива.
Посмотрите у apache значение MaxClients и попробуйте его увеличить.
А вы не пробовали смотреть? :) Ведь всю информацию вам на глаза сунули в первом посту.
"Увеличить" MaxClients, который уже итак > 100 (в зависимости от используемого MPM апача, можно только гадать) - это (мягко говоря) неумный совет.
Отключите для тестов nginx
А это еще зачем - чтобы быстрее все накрылось? 🍿
ТС, вам стоило бы начать с настройки мониторинга. Начинают отваливаться запросы к сайту - собираете статистику. Стоит обратить внимание на вывод top, mysql processlist, server-status апача.
Статистика собирается, актуальное из лога нгинкса я цитировал. Предположения что память и процессор непричём основаны на графиках.
Исходя из предоставленной вами информации:
1) Зачем вам ITK, если сайт *один*?! переходите на обычный prefork mpm с mod_php (только будьте внимательны к выставленным правам на файлы).
Я этот ITK не ставил. Так шло дефолтом видимо. в top я постоянно вижу 6-7 процессов httpd.itk и каждый жрёт по 195 Мб памяти. Насчёт prefork mpm с mod_php я хочу проконсультироваться с профессионалами IPB насчёт целесообразности.
2) MaxClients=128 и больше - при характеристиках вашего vps просто безумны. Наоборот - уменьшайте, даже на порядок.
Меня тоже такая рекомендация насторожила. Я читал где то что расчёт должен быть такой: оперативная память минус 30%и поделить на среднюю память одного процесс Апач.
получается (1024 Mb * 0.7)/195 Mb = 3.6
Или я что то не понял (скорее всего)
Или процессы эти жрут немеряно памяти
Или эта формула неправильная.
3) Обратите внимание на конфиг mysql. Судя по всему остальному - он "среднеарифметический", положенный для вас авторами дистрибутива.
Вот ему как раз было уделено время и там я настроил оптимально. Периодически прогоняю mysqltuner.pl и корректирую конфиг.
Вопрос решён.
Ошибки выползали из за механизма антиddos
в iptables прописано исключение для самого сервера. Иначе попытки чрезмерного "общения" между апачем и нгинксом классифицировались как ddos
последние 3-4 часа ни одной 502 ошибки
Статистика собирается, актуальное из лога нгинкса я цитировал.
Это не "актуальное" - причин подобных ошибок может быть несколько.
Предположения что память и процессор непричём основаны на графиках.
Вот их и стоило бы привести. На будущее, естественно ;)
Насчёт prefork mpm с mod_php я хочу проконсультироваться с профессионалами IPB насчёт целесообразности.
Вместо IPB можно подставить любой сайт на PHP. Если проект один - itk вреден.
Я читал где то что расчёт должен быть такой: оперативная память минус 30%и поделить на среднюю память одного процесс Апач.
Ну да, как-то так. Нужно, чтобы максимальное число апачей не исчерпало памяти и оставило еще ее для других (mysql, etc).
Вот ему как раз было уделено время и там я настроил оптимально. Периодически прогоняю mysqltuner.pl и корректирую конфиг.
mysqltuner.pl, конечно, это хорошо - но лучше без фанатизма. Это все-таки тупой скрипт, а не безошибочные рекоммендации к исполнению.
Я отвечал с планшета, поэтому аттачи в первом сообщении не видел.
Кроме того, настройки mpm могут перебиваться через инклуд в conf.d (и такое встречается)
Пишите на skype - xfes.support - оптимизируем сервер бесплатно, за ~30 минут. Опыт обнаружения узких мест и оптимизации производительности VDS с сайтами у нас очень большой.