Форум русской поддержки Joomla!® CMS
08.12.2016, 20:07:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Сколько системных процессов apache2 должно быть на VPS?

 (Прочитано 433 раз)
0 Пользователей и 1 Гость смотрят эту тему.
borro
Живу я здесь
******

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1161


желаю вам счастья


« : 06.04.2016, 14:49:04 »

Здравствуйте.

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

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

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

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

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


* top2.jpg (489.57 Кб, 801x1001 - просмотрено 79 раз.)
« Последнее редактирование: 06.04.2016, 17:28:04 от borro » Записан
Candidate
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 5



« Ответ #1 : 17.04.2016, 16:34:49 »

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

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

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

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

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

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

Репутация: +382/-10
Offline Offline

Пол: Мужской
Сообщений: 4396



« Ответ #2 : 17.04.2016, 16:53:36 »

Keepalive в Apache отключен? Если нет, то отключите.
Записан
Candidate
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 5



« Ответ #3 : 17.04.2016, 18:31:42 »

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

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

Репутация: +382/-10
Offline Offline

Пол: Мужской
Сообщений: 4396



« Ответ #4 : 17.04.2016, 21:21:02 »

Если он падает от такого количества подключений то тоже стоит, да и разгрузить его с помощью отдачи статики nginx тоже.
« Последнее редактирование: 17.04.2016, 21:24:13 от ChaosHead » Записан
borro
Живу я здесь
******

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1161


желаю вам счастья


« Ответ #5 : 18.04.2016, 10:28:23 »

Доброго утра!

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

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

Критично?
Записан
yuri-it
Живу я здесь
******

Репутация: +37/-3
Offline Offline

Сообщений: 1037


« Ответ #6 : 18.04.2016, 11:25:59 »

Это следует делать только в том случае, если Apache стоит за nginx. А если Apache является фронт-ендом, то лучше включить Keepalive.
Keepalive следует включать если есть запас ОЗУ. Если памяти хватает, то Keepalive советую включить, главное не забыть поставить невысокий KeepAliveTimeout на закрытие соединений.
Записан
ChaosHead
Профи
********

Репутация: +382/-10
Offline Offline

Пол: Мужской
Сообщений: 4396



« Ответ #7 : 18.04.2016, 12:31:02 »

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
Живу я здесь
******

Репутация: +37/-3
Offline Offline

Сообщений: 1037


« Ответ #8 : 18.04.2016, 12:38:33 »

А есть ли смысл, если статику отдаёт nginx, а Apache отдаст только 1 HTML, продержит соединение ещё n секунд (KeepAliveTimeout 5 по дефолту) и закроет его? Пользователи imho ускорения не увидят, т.к. по 5 страниц в секунду страницы редко кто открывает. Ускорение будет заметно разве что ботам.
Все верно, речь шла именно когда работает голый апач. Если стоит Nginx, то лучше внести в конфиг tcp_nodelay on и не забыть про keepalive_timeout, keepalive_requests и reset_timedout_connection.
Записан
ChaosHead
Профи
********

Репутация: +382/-10
Offline Offline

Пол: Мужской
Сообщений: 4396



« Ответ #9 : 18.04.2016, 12:46:31 »

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

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1161


желаю вам счастья


« Ответ #10 : 18.04.2016, 14:26:51 »

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

Репутация: +382/-10
Offline Offline

Пол: Мужской
Сообщений: 4396



« Ответ #11 : 18.04.2016, 14:37:24 »

%mem - это в процентах, RES вам нужно, ну или в процентах посчитать
Записан
borro
Живу я здесь
******

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1161


желаю вам счастья


« Ответ #12 : 18.04.2016, 15:50:18 »

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

Репутация: +382/-10
Offline Offline

Пол: Мужской
Сообщений: 4396



« Ответ #13 : 18.04.2016, 16:09:40 »

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

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1161


желаю вам счастья


« Ответ #14 : 18.04.2016, 17:38:02 »

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

Репутация: +382/-10
Offline Offline

Пол: Мужской
Сообщений: 4396



« Ответ #15 : 18.04.2016, 19:14:18 »

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

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

Репутация: +226/-9
Offline Offline

Сообщений: 3537


« Ответ #16 : 18.04.2016, 19:20:48 »

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

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1161


желаю вам счастья


« Ответ #17 : 19.04.2016, 10:40:56 »

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

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

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet