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

borro

  • Живу я здесь
  • 1281
  • 21
  • желаю вам счастья
Здравствуйте.

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

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

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

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

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

Candidate

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

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

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

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

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

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

ChaosHead

  • Профи
  • 4739
  • 398
Keepalive в Apache отключен? Если нет, то отключите.
*

Candidate

  • Новичок
  • 5
  • 0
Keepalive в Apache отключен? Если нет, то отключите.

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

ChaosHead

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

borro

  • Живу я здесь
  • 1281
  • 21
  • желаю вам счастья
Доброго утра!

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

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

Критично?
*

yuri-it

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

ChaosHead

  • Профи
  • 4739
  • 398
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

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

ChaosHead

  • Профи
  • 4739
  • 398
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

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

ChaosHead

  • Профи
  • 4739
  • 398
%mem - это в процентах, RES вам нужно, ну или в процентах посчитать
*

borro

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

ChaosHead

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

borro

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

ChaosHead

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

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

flyingspook

  • Профи
  • 3619
  • 236
Сколько системных процессов apache2 должно быть на VPS?
Столько на сколько хватит мощности железа того или иного VPS.
*

borro

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

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

ISPmanager: Сколько нужно места для резервных копий сайта?

Автор slepoy

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

Автор westman

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