0 Пользователей и 1 Гость просматривают эту тему.
  • 17 Ответов
  • 1796 Просмотров
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Здравствуйте.

Отслеживал результаты вывода команды top на Debian7. Возникают ситуации, когда запускается куча команд apache2, которые сжирают всю процессорную мощность, и сайт висит.
1. Сколько в принципе должно быть процессов apache2 для одного сайта, работающего на VPS и под какими пользователями они должны быть?

Нагружающие процессы apache2 то возникают, то исчезают.
2. Как понять, что их инициализирует?

В приложении снимок во время одной из таких пиковых ситуаций

Юзер antilopa это тот, кому даны права на папку с сайтом, не root

Посмотрел access.log в районе времени, когда был зафиксирован пик нагрузки и увидел кучу ботов Яндекса и других поисковиков:
Спойлер
[свернуть]
Могут ли боты генерить кучу процессов apache2?
Сегодня сайт был не доступен полдня. Может из-за этого боты ополчились?
« Последнее редактирование: 06.04.2016, 16:28:04 от borro »
*

Candidate

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Возникают ситуации, когда запускается куча команд apache2, которые сжирают всю процессорную мощность, и сайт висит.

Ну это разве ж куча!?

1. Сколько в принципе должно быть процессов apache2 для одного сайта, работающего на VPS и под какими пользователями они должны быть?

Должно быть столько, сколько тянет Ваша VPSка.

2. Как понять, что их инициализирует?

Их инициализирует основной процесс Apache согласно правилам, которые прописаны у него в файле конфигурации. Поменяйте в нем настрйоки под себя, и всё будет хорошо.
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Keepalive в Apache отключен? Если нет, то отключите.
*

Candidate

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Keepalive в Apache отключен? Если нет, то отключите.

Это следует делать только в том случае, если Apache стоит за nginx. А если Apache является фронт-ендом, то лучше включить Keepalive.
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Если он падает от такого количества подключений то тоже стоит, да и разгрузить его с помощью отдачи статики nginx тоже.
« Последнее редактирование: 17.04.2016, 20:24:13 от ChaosHead »
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Доброго утра!

Спасибо за предложения. Апачи стоит за nginx. Я поставил 3 сек ограничение на частоту посещения ботами и все нормализовалось.

Настройки апачи такие:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

Критично?
*

yuri-it

  • Давно я тут
  • 994
  • 44 / 3
  • Быстрый хостинг https://jehost.ru
Это следует делать только в том случае, если Apache стоит за nginx. А если Apache является фронт-ендом, то лучше включить Keepalive.
Keepalive следует включать если есть запас ОЗУ. Если памяти хватает, то Keepalive советую включить, главное не забыть поставить невысокий KeepAliveTimeout на закрытие соединений.
По-настоящему быстрый хостинг для Joomla : https://jehost.ru
Отзывы: http://joomlaforum.ru/index.php/topic,109288.0.html
Отзывы по хостингу http://hosting101.ru/jehost.ru
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Keepalive следует включать если есть запас ОЗУ. Если памяти хватает, то Keepalive советую включить, главное не забыть поставить невысокий KeepAliveTimeout на закрытие соединений.

А есть ли смысл, если статику отдаёт nginx, а Apache отдаст только 1 HTML, продержит соединение ещё n секунд (KeepAliveTimeout 5 по дефолту) и закроет его? Пользователи imho ускорения не увидят, т.к. по 5 страниц в секунду страницы редко кто открывает. Ускорение будет заметно разве что ботам.

Вот пишут в мануалах:
Цитировать
The Keep-Alive extension to HTTP/1.0 and the persistent connection feature of HTTP/1.1 provide long-lived HTTP sessions which allow multiple requests to be sent over the same TCP connection. In some cases this has been shown to result in an almost 50% speedup in latency times for HTML documents with many images. To enable Keep-Alive connections, set KeepAlive On.
В некоторых случаях это даст результат 50% сокращения времени задержки при отдаче HTML документа с большим количеством картинок. Это если у вас Apache картинки отдаёт.
Но у нас картинки не Apache, а nginx отдаёт и у него свой KeepAlive на 30 секунд по дефолту. Поэтому лично я не вижу особого смысла оставлять KeepAlive в Apache в данном случае.
*

yuri-it

  • Давно я тут
  • 994
  • 44 / 3
  • Быстрый хостинг https://jehost.ru
А есть ли смысл, если статику отдаёт nginx, а Apache отдаст только 1 HTML, продержит соединение ещё n секунд (KeepAliveTimeout 5 по дефолту) и закроет его? Пользователи imho ускорения не увидят, т.к. по 5 страниц в секунду страницы редко кто открывает. Ускорение будет заметно разве что ботам.
Все верно, речь шла именно когда работает голый апач. Если стоит Nginx, то лучше внести в конфиг tcp_nodelay on и не забыть про keepalive_timeout, keepalive_requests и reset_timedout_connection.
По-настоящему быстрый хостинг для Joomla : https://jehost.ru
Отзывы: http://joomlaforum.ru/index.php/topic,109288.0.html
Отзывы по хостингу http://hosting101.ru/jehost.ru
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
Критично?
Включите отладку или top, посмотрите сколько мегабайт оперативки у вас съедает открытие среднестатистической страницы сайта. Возьмите размер вашей свободной оперативки и прикиньте, сможет ли ваш сервер в оперативке держать сразу 100 таких открытых соединений.
Или откройте сайт, нажмите F5 на клавиатуре 100 раз, если Apache не падает, то 100 - нормально. На скрине у вас только 23 и вы жалуетесь, что падает. Если сделать KeepAlive Off, то они не будут 5 секунд дополнительно висеть открытыми и ждать следующего действия, а будут быстро закрываться, либо ограничить максимальное количество KeepAlive запросов под ваш сервер.
« Последнее редактирование: 18.04.2016, 11:59:43 от ChaosHead »
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Включите отладку или top, посмотрите сколько мегабайт оперативки у вас съедает открытие среднестатистической страницы сайта. Возьмите размер вашей свободной оперативки и прикиньте, сможет ли ваш сервер в оперативке держать сразу 100 таких открытых соединений.
Или откройте сайт, нажмите F5 на клавиатуре 100 раз, если Apache не падает, то 100 - нормально. На скрине у вас только 23 и вы жалуетесь, что падает. Если сделать KeepAlive Off, то они не будут 5 секунд дополнительно висеть открытыми и ждать следующего действия, а будут быстро закрываться, либо ограничить максимальное количество KeepAlive запросов под ваш сервер.
Спасибо! через f5 буду лучше во внерабочее время :) Странно, включил отладку в Joomla, ничего не выводит, кэш чистил... Если же воспользоваться вариантом с top, то как там понять, что это именно под твою страницу память была израсходована? Или вы предлагаете взять среднее арифметическое значение столбца %mem для процессов apache2 и уже с ним произвести вычисления?
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
%mem - это в процентах, RES вам нужно, ну или в процентах посчитать
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
%mem - это в процентах, RES вам нужно, ну или в процентах посчитать
Если я правильно все понял:
KiB Mem Free: 129792(есть ещё своп)
Apache2 res 5028
N= 129792/5028 = 25,8...
Получается 25. При этом на момент замера показаний в отчете top висело ещё с десяток процессов apache2.
Значит ли это, что MaxKeepAliveRequests должно быть равно примерно 25+10=35?
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Ещё сколько-то съедает MySQL, зависти от конфига. Можно попробовать разные варианты и протестировать с loadimpact.com как будет вести себя под нагрузкой. Лично я бы его совсем отключил.
« Последнее редактирование: 18.04.2016, 15:14:16 от ChaosHead »
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Ещё сколько-то съедает MySQL, зависти от конфига. Можно попробовать разные варианты и протестировать с loadimpact.com как будет вести себя под нагрузкой. Лично я бы его совсем отключил.
ясно. можно ли рассчётную цифру 35 трактовать как оценочное максимальное число посетителей сайта в конкретный момент времени, которых сервер ещё потянет?
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Максимальное число посетителей в единицу времени - это другой параметр. Это же - максимальное число посетителей, которым будет n секунд поддерживаться открытое соединение, в надежде, что они что-то ещё за это время откроют. У остальных соединение будет закрываться сразу после передачи.

Это как пришел к человеку доставщик продуктов, доставил булку хлеба и говорит: "Если вам что-то ещё нужно, то я тут в машине с продуктами буду ещё 5 минут сидеть ждать, а потом уеду. Тогда если вы потом надумаете ещё кефира купить, то вам нужно будет заново за мной посылать". Но это задерживает всю его машину и пробку на дороге другим машинам создаёт.
А у другого доставщика такой опции нет, он доставку передал и тут-же уехал.
Таких машин может приехать 100 штук, но парковка расчитана только на 25, а потом тупо пол города становится из-за того, что они всё загородили и ждут. А если посылать доставщиков, которые не ждут, то 25 машин коллапс на дороге не создадут, т.к. быстро разъедутся. Но вот от 50 обычных тоже будет пробка.
Как ещё понятней обьяснить не знаю.
« Последнее редактирование: 18.04.2016, 18:34:15 от ChaosHead »
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
Сколько системных процессов apache2 должно быть на VPS?
Столько на сколько хватит мощности железа того или иного VPS.
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Максимальное число посетителей в единицу времени - это другой параметр. Это же - максимальное число посетителей, которым будет n секунд поддерживаться открытое соединение, в надежде, что они что-то ещё за это время откроют. У остальных соединение будет закрываться сразу после передачи.

Это как пришел к человеку доставщик продуктов, доставил булку хлеба и говорит: "Если вам что-то ещё нужно, то я тут в машине с продуктами буду ещё 5 минут сидеть ждать, а потом уеду. Тогда если вы потом надумаете ещё кефира купить, то вам нужно будет заново за мной посылать". Но это задерживает всю его машину и пробку на дороге другим машинам создаёт.
А у другого доставщика такой опции нет, он доставку передал и тут-же уехал.
Таких машин может приехать 100 штук, но парковка расчитана только на 25, а потом тупо пол города становится из-за того, что они всё загородили и ждут. А если посылать доставщиков, которые не ждут, то 25 машин коллапс на дороге не создадут, т.к. быстро разъедутся. Но вот от 50 обычных тоже будет пробка.
Как ещё понятней обьяснить не знаю.
вам прям книжки по IT писать :) спасибо
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Общее количество процессов

Автор Alex Kop

Ответов: 0
Просмотров: 1148
Последний ответ 30.09.2022, 19:45:38
от Alex Kop
ISPmanager: Сколько нужно места для резервных копий сайта?

Автор slepoy

Ответов: 1
Просмотров: 2220
Последний ответ 06.09.2015, 18:37:34
от wishlight
Какие модули должны быть включены на веб-сервере?

Автор westman

Ответов: 3
Просмотров: 3649
Последний ответ 26.05.2010, 20:51:32
от valagoff