Найти проблемное место на сайте, которое побуждает грузить всю систему довольно непросто. Однако это не говорит о том, что это не возможно, вполне возможно, и мы в данном посту как раз рассмотрим одну из подобных ситуаций.
Итак, мы знаем, что система висит, и грузит её процесс httpd. Этот процесс порождают скрипты, вызываемые на сайте. Наша задача определить узкое место на сайте, то, что грузит сервер, и устранить его соответственно.
В Apache есть специальные модули, которые помогут нам в этом деле, именуются они как status_module и info_module. Для их использования нужно убедиться, что они включены в конфигурацию сервера Apache. По умолчанию они включены, так что, скорее всего вам не придется заниматься их установкой.
Открываем файл конфигурации веб-сервера, у меня система CentOS Linux, и файл конфигурации расположен тут:
/etc/httpd/conf/httpd.conf
Убеждаемся, что модули подключены, находим подобные строки:
LoadModule status_module modules/mod_status.so LoadModule info_module modules/mod_info.so
После этого, после строки DocumentRoot, вписываем настройки, чтобы появилась возможность мониторинга нагрузки через браузер.
ExtendedStatus On <Location /server-status> SetHandler server-status Order Deny,Allow Deny from all # IP адреса, которые могут просматривать данные Allow from 127.0.0.1 Allow from 192.168.0.189 </Location>
Строка Location /server-status указывает путь, по которому будет доступна статистика, здесь стоит указать свой путь, из соображений безопасности. Так же важный момент это IP адреса, для которых будет доступна статистика. К этим параметрам тоже следует отнестись с вниманием, чтобы статистика не оказалась в открытом доступе.
После внесения изменений в файле конфигурации, нужно перезапустить сам сервера httpd. После этого можно попробовать открыть страницу со статистикой, она будет доступна по адресу:
http://ваш_сайт/sever-status/
Стоит обратить внимание на то, что если у вас имеется файл .htaccess в котором прописаны правила перенаправления, то он может перекрывать доступ к /server-status. Для этого вам так же будет необходимо исключить путь к статистике.
После открытия статистики видим страницу, которая начинается со строк «Apache Server Status for». Ниже будет таблица, в которой нас будут интересовать процессы грузящие систему. По колонке CPU можно определить проблемные процессы. Убираются проблемные процессы по PID (ID процесса), в таблице так же отмечена эта колонка.
Убираем проблемный процесс, посредством консоли:
# kill -s 1911
После того как вы определили URL который грузит сервер, далее вам предстоит самостоятельно выяснить и устранить причины излишней нагрузки на процессор уже в коде вашего сайта. Вы можете так же воспользоваться другими хорошими инструментами, такими как Munin, довольно хорошая вещь для мониторинга сервера. Бывает и довольно часто подвисшие процессы в MySQL, что тоже не очень сказывается на работе сайта, для этих целей вы можете воспользоваться утилитой Mytop.
Наблюдаю странную проблему второй день. До этого все было в норме.
Все ядра процессора грузятся на 100%. Создается куча активных процессов apache2 -k start
Сижу и периодически рестартую апач, чтобы сервер не помирал.
Картина в htop такая:
Список модулей в принципе дефолтный:
Может быть DDOS?
-
Вопрос заданболее трёх лет назад
-
1865 просмотров
Кроме ddos, есть вариант криворукий разработчик скрипт какой нибуть сам себя зациклил. Если Сайт выключить, нагрузка сохраняется?
Переместите конфиг с сайтом куда нибуть, рестартаните и посмотрите нагрузку.
ddos можно проверить через iftop.
Так же может такое наблюдатся когда частота процессора ниже необходимой для работы сервера
посмотреть можно
cat /proc/cpuinfo
Проц может и мощный, но система перевела его в пассивный режим
Проблема решена.
Дело было в одном из модулей одного из сайтов. Он начал «разрастаться» путем ошибочного копирования страниц в карте сайте. Боты соответственно создали серьезную нагрузки при запросах к карте.
Пригласить эксперта
-
Показать ещё
Загружается…
04 февр. 2023, в 13:03
5000 руб./за проект
04 февр. 2023, в 12:31
10000 руб./за проект
04 февр. 2023, в 11:38
1000 руб./за проект
Минуточку внимания
-
19.10.2010, 04:25
#1
Member
apache2 грузит проц на 100%
пару дней назад все работало нормально, тут апач начинает бесится и грузить процесор на 100%, стоит nginx когда его отключаю все нормализуется, т.е у пользователей нету доступа к сайтам, уже второй день сижу парю думаю в чем дело
вот логи апача
http://rghost.ru/2966664
-
19.10.2010, 04:32
#2
ISPsystem team
[QUOTE][Mon Oct 18 17:55:04 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Mon Oct 18 17:55:06 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Mon Oct 18 17:55:06 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/QUOTE]
DDOSят видимо какой-то сайт.
логи сайтов смотрите
-
19.10.2010, 04:41
#3
Member
netstat -na
показала два ИП адреса один ИП ето ИП самого сервера и один
89.108.114.130:62855
вот в txt забросил
http://rghost.ru/2966884
если именно етот ИП досит то как можно его блокануть?Последний раз редактировалось KapaTicT; 19.10.2010 в 04:45.
-
19.10.2010, 04:50
#4
Member
да етот ИП меня досил, наконецто, спасибо Вам что подказали такую команду, теперь сайт летает
0 / 0 / 0 Регистрация: 22.11.2017 Сообщений: 3 |
|
1 |
|
24.08.2010, 18:03. Показов 5750. Ответов 4
Может быть не совсем в тему! Проблема такая: установил Oracle 9i на бук домашний, вроде все нормально встало, после перезагрузки процесс Apache.exe грузит на 100% проц и в папке где сам Apache стоит, в папке logs файл error_log размер свой увеличивает бесконечно, до конца диск забивает своим размером!
__________________
0 |
8376 / 3598 / 419 Регистрация: 03.07.2009 Сообщений: 10,708 |
|
24.08.2010, 22:39 |
2 |
bezlikiy, а какое отношение Apache имеет к Oracle?
0 |
Администратор 82675 / 51248 / 244 Регистрация: 10.04.2006 Сообщений: 13,350 |
|
24.08.2010, 22:45 |
3 |
bezlikiy, так вы посмотрите, что пишется в error_log.
0 |
0 / 0 / 0 Регистрация: 22.11.2017 Сообщений: 3 |
|
24.08.2010, 23:33 |
4 |
ну вообще то это веб-сервер…
0 |
8376 / 3598 / 419 Регистрация: 03.07.2009 Сообщений: 10,708 |
|
25.08.2010, 09:55 |
5 |
bezlikiy, что-то криво сделали, у меня нормально он установился.
0 |
Вот отрывки из /var/log/apache2/error.log
[Sun May 24 07:36:43 2015] [notice] mod_ruid2/0.9.7 enabled
[Sun May 24 07:36:43 2015] [notice] Apache/2.2.22 (Debian) mod_fcgid/2.3.6 PHP/5.4.4-14+deb7u9 mod_ssl/2.2.22 OpenSSL/1.0.1e configured — resuming normal operations
[Sun May 24 11:02:48 2015] [error] an unknown filter was not added: includes
[Sun May 24 11:02:56 2015] [error] an unknown filter was not added: includes
[Sun May 24 16:21:57 2015] [error] an unknown filter was not added: includes
[Sun May 24 16:31:08 2015] [error] an unknown filter was not added: includes
[Sun May 24 18:05:30 2015] [error] an unknown filter was not added: includes
[Sun May 24 19:16:40 2015] [error] an unknown filter was not added: includes
[Mon May 25 00:06:49 2015] [error] an unknown filter was not added: includes
[Mon May 25 04:38:39 2015] [error] an unknown filter was not added: includes
[Mon May 25 08:53:45 2015] [error] an unknown filter was not added: includes
[Mon May 25 10:37:52 2015] [warn] child process 26113 still did not exit, sending a SIGTERM
[Mon May 25 10:37:52 2015] [warn] child process 32298 still did not exit, sending a SIGTERM
[Mon May 25 10:37:52 2015] [warn] child process 15690 still did not exit, sending a SIGTERM
[Mon May 25 10:37:52 2015] [warn] child process 12945 still did not exit, sending a SIGTERM
[Mon May 25 10:37:52 2015] [warn] child process 6277 still did not exit, sending a SIGTERM
[Mon May 25 10:37:54 2015] [warn] child process 26113 still did not exit, sending a SIGTERM
[Mon May 25 10:37:54 2015] [warn] child process 32298 still did not exit, sending a SIGTERM
[Mon May 25 10:37:54 2015] [warn] child process 15690 still did not exit, sending a SIGTERM
[Mon May 25 10:37:54 2015] [warn] child process 12945 still did not exit, sending a SIGTERM
[Mon May 25 10:37:54 2015] [warn] child process 6277 still did not exit, sending a SIGTERM
[Mon May 25 10:37:56 2015] [warn] child process 26113 still did not exit, sending a SIGTERM
[Mon May 25 10:37:56 2015] [warn] child process 32298 still did not exit, sending a SIGTERM
[Mon May 25 10:37:56 2015] [warn] child process 15690 still did not exit, sending a SIGTERM
[Mon May 25 10:37:56 2015] [warn] child process 12945 still did not exit, sending a SIGTERM
[Mon May 25 10:37:56 2015] [warn] child process 6277 still did not exit, sending a SIGTERM
[Mon May 25 10:37:58 2015] [error] child process 26113 still did not exit, sending a SIGKILL
[Mon May 25 10:37:58 2015] [error] child process 32298 still did not exit, sending a SIGKILL
[Mon May 25 10:37:58 2015] [error] child process 15690 still did not exit, sending a SIGKILL
[Mon May 25 10:37:58 2015] [error] child process 12945 still did not exit, sending a SIGKILL
[Mon May 25 10:37:58 2015] [error] child process 6277 still did not exit, sending a SIGKILL
[Mon May 25 10:37:59 2015] [notice] caught SIGTERM, shutting down
[Mon May 25 10:38:00 2015] [notice] suEXEC mechanism enabled (wrapper: /usr/lib/apache2/suexec)
[Mon May 25 10:38:00 2015] [notice] mod_ruid2/0.9.7 enabled
[Mon May 25 10:38:00 2015] [notice] Apache/2.2.22 (Debian) mod_fcgid/2.3.6 PHP/5.4.4-14+deb7u9 mod_ssl/2.2.22 OpenSSL/1.0.1e configured — resuming normal operations
[Mon May 25 12:15:48 2015] [error] an unknown filter was not added: includes
[Mon May 25 12:15:50 2015] [error] an unknown filter was not added: includes
[Mon May 25 12:15:50 2015] [error] an unknown filter was not added: includes
[Mon May 25 12:15:50 2015] [error] an unknown filter was not added: includes
[Mon May 25 12:31:53 2015] [error] an unknown filter was not added: includes
[Mon May 25 13:38:13 2015] [error] an unknown filter was not added: includes
[Mon May 25 14:25:46 2015] [error] an unknown filter was not added: includes
[Mon May 25 15:55:59 2015] [error] an unknown filter was not added: includes
[Mon May 25 18:19:24 2015] [error] an unknown filter was not added: includes
[Mon May 25 21:16:14 2015] [error] an unknown filter was not added: includes
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 —:—:— —:—:— —:—:— 0
100 15743 100 15743 0 0 76014 0 —:—:— —:—:— —:—:— 111k
—2015-05-25 21:40:22— http://212.48.75.38/pq1
Connecting to 212.48.75.38:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 15743 (15K) [text/plain]
Saving to: `pq1.1′
rm: cannot remove `/tmp/minify/0/45e9ac2aeb4a6ffea7eaed9e1fe6542d3fdeb40b.js’: Permission denied
rm: cannot remove `/tmp/minify/0/21ffe90a77d8ab1ecb6782f904360305f1bcb698.js’: Permission denied
rm: cannot remove `/tmp/minify/0/ccb345783ca65f6b81cd76ab667ff33fc4e29a18.js’: Permission denied
rm: cannot remove `/tmp/minify/0/db0b04223e609932de32108874376f33e39aae2a.js’: Permission denied
rm: cannot remove `/tmp/minify/0/e815bfcfcdeaebeae1bda528243bfcf7bee1bb8e.js’: Permission denied
rm: cannot remove `/tmp/minify/0/25413d17d81ed45c6d9c27e26df9dac172a27113.css’: Permission denied
rm: cannot remove `/tmp/minify/0/6103976ef890dc18dccec091f035cd7f836fac61.css’: Permission denied
rm: cannot remove `/tmp/minify/0/495e78626183fea14b7404cf551d81f2b489d0d5.js’: Permission denied
rm: cannot remove `/tmp/minify/0/abf0303aa5b99214da409abc272b46a1c907750e.css’: Permission denied
rm: cannot remove `/tmp/minify/0/59aee07edffbc4d1b90bf6de644612f53c367aa1.js’: Permission denied
gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file: starts with 0x47 0x49
gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file: starts with 0x47 0x49
gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file: starts with 0x47 0x49
gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file: starts with 0x47 0x49
gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file: starts with 0x47 0x49
gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file: starts with 0x47 0x49
gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file: starts with 0x47 0x49
gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file: starts with 0x47 0x49
[Sat May 23 18:26:57 2015] [error] an unknown filter was not added: includes
[Sun May 24 01:12:34 2015] [error] an unknown filter was not added: includes
[Sun May 24 07:36:40 2015] [notice] Graceful restart requested, doing restart
[Sun May 24 07:36:40 2015] [error] (9)Bad file descriptor: apr_socket_accept: (client socket)
Вот файл /var/log/apache2/access.log
127.0.0.1 — — [19/May/2014:11:05:09 +0400] «GET / HTTP/1.1» 200 484 «-» «Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140429 Firefox/24.0 Iceweasel/24.5.0»
127.0.0.1 — — [19/May/2014:11:05:09 +0400] «GET /favicon.ico HTTP/1.1» 404 498 «-» «Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140429 Firefox/24.0 Iceweasel/24.5.0»
127.0.0.1 — — [19/May/2014:11:05:09 +0400] «GET /favicon.ico HTTP/1.1» 404 498 «-» «Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140429 Firefox/24.0 Iceweasel/24.5.0»
127.0.0.1 — — [19/May/2014:11:05:10 +0400] «GET / HTTP/1.1» 304 209 «-» «Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140429 Firefox/24.0 Iceweasel/24.5.0»
127.0.0.1 — — [19/May/2014:11:05:10 +0400] «GET / HTTP/1.1» 304 209 «-» «Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140429 Firefox/24.0 Iceweasel/24.5.0»
127.0.0.1 — — [19/May/2014:11:05:10 +0400] «GET / HTTP/1.1» 304 209 «-» «Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140429 Firefox/24.0 Iceweasel/24.5.0»
127.0.0.1 — — [19/May/2014:11:05:11 +0400] «GET / HTTP/1.1» 304 209 «-» «Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140429 Firefox/24.0 Iceweasel/24.5.0»
127.0.0.1 — — [19/May/2014:11:05:11 +0400] «GET / HTTP/1.1» 304 209 «-» «Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140429 Firefox/24.0 Iceweasel/24.5.0»
127.0.0.1 — — [19/May/2014:11:05:11 +0400] «GET / HTTP/1.1» 304 209 «-» «Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140429 Firefox/24.0 Iceweasel/24.5.0»
127.0.0.1 — — [19/May/2014:11:05:12 +0400] «GET / HTTP/1.1» 304 209 «-» «Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140429 Firefox/24.0 Iceweasel/24.5.0»
127.0.0.1 — — [19/May/2014:11:07:35 +0400] «GET / HTTP/1.1» 304 210 «-» «Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140429 Firefox/24.0 Iceweasel/24.5.0»
127.0.0.1 — — [19/May/2014:11:07:35 +0400] «GET / HTTP/1.1» 304 209 «-» «Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140429 Firefox/24.0 Iceweasel/24.5.0»
127.0.0.1 — — [19/May/2014:11:07:36 +0400] «GET / HTTP/1.1» 304 209 «-» «Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140429 Firefox/24.0 Iceweasel/24.5.0»
127.0.0.1 — — [19/May/2014:11:07:36 +0400] «GET / HTTP/1.1» 304 209 «-» «Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140429 Firefox/24.0 Iceweasel/24.5.0»
127.0.0.1 — — [19/May/2014:11:07:36 +0400] «GET / HTTP/1.1» 304 209 «-» «Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140429 Firefox/24.0 Iceweasel/24.5.0»
127.0.0.1 — — [19/May/2014:11:07:36 +0400] «GET / HTTP/1.1» 304 209 «-» «Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140429 Firefox/24.0 Iceweasel/24.5.0»
127.0.0.1 — — [19/May/2014:11:07:36 +0400] «GET / HTTP/1.1» 304 209 «-» «Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140429 Firefox/24.0 Iceweasel/24.5.0»
127.0.0.1 — — [19/May/2014:11:10:50 +0400] «GET / HTTP/1.1» 200 484 «-» «Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140429 Firefox/24.0 Iceweasel/24.5.0»
127.0.0.1 — — [19/May/2014:11:10:50 +0400] «GET /favicon.ico HTTP/1.1» 404 498 «-» «Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140429 Firefox/24.0 Iceweasel/24.5.0»
morozovsk:
это что шутка? а где же тогда
Это не шутка.:)
Надо разрешить этот путь в конфиге апача, лучше запаролить и запретить всем кроме вашего провайдера (или локалхоста).
Вот пример для незапароленного локалхоста (и только для него).
Если так сделаете, то сможете смотреть с самого сервера, зайдя через ssh.
<Location /server-status>
SetHandler server-statusOrder Deny,Allow
Deny from all
Allow from localhost
</Location>
http://httpd.apache.org/docs/2.0/ru/mod/mod_status.html
Он выдаёт примерно такое (сейчас колонки немного смещаются при отобращении):
Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current processSrv PID Acc M CPU SS Req Conn Child Slot Client VHost Request
0-9 25290 0/58/17117 _ 30.40 13 0 0.0 0.07 25.06 167.23.241.61 ******.ru GET /images/img12.jpg HTTP/1.1
0-9 25290 1/30/17962 K 30.69 3 89 0.0 0.08 24.99 194.67.28.13 ******.ru GET /index.php?action=12 HTTP/1.1
0-9 25290 0/31/17530 _ 30.25 16 0 0.0 0.09 23.44 167.23.241.61 ******.ru GET /data/dqata.html HTTP/1.1
System and Httpd Information
System:
# cat /proc/version
Linux version 3.10.0-514.2.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue Dec 6 23:06:41 UTC 2016
Httpd Version:
# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Nov 14 2016 18:04:44
Make MPM Prefork Configure
Get MPM In The Default
# sudo apachectl -t -D DUMP_MODULES |grep mpm
[Thu Jan 12 16:06:11.778080 2017] [so:warn] [pid 23727] AH01574: module wsgi_module is already loaded, skipping
mpm_prefork_module (shared)
That means mpm_prefork_module
is installed and enabled. You can change it to the mode of event
, worker
or prefork(default)
in the file 00-mpm.conf
, which file path is /etc/httpd/conf.modules.d
.
The reference of Apache MPM is Apache MPM Common Directives
Add Personal Configure
# sudo cat >> /etc/httpd/conf/httpd.conf <<-'EOF'
<IfModule prefork.c>
ServerLimit 20
StartServers 15
MinSpareServers 5
MaxSpareServers 10
MaxClients 15
MaxRequestsPerChild 25
</IfModule>
EOF
- My VM has 2GB memory and 2 Processors
Read details of this configure in the above-mentioned reference.
Restart Httpd
# sudo systemctl restart httpd.service
Inspect Status
# systemctl status httpd.service
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2017-01-12 13:40:12 CST; 2h 48min ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 16576 (httpd)
Status: "Total requests: 3625; Current requests/sec: -70.2; Current traffic: 0 B/sec"
Memory: 869.7M
CGroup: /system.slice/httpd.service
├─16576 /usr/sbin/httpd -DFOREGROUND
├─24122 /usr/sbin/httpd -DFOREGROUND
├─24125 /usr/sbin/httpd -DFOREGROUND
├─24154 /usr/sbin/httpd -DFOREGROUND
├─24157 /usr/sbin/httpd -DFOREGROUND
├─24211 /usr/sbin/httpd -DFOREGROUND
├─24219 /usr/sbin/httpd -DFOREGROUND
└─24236 /usr/sbin/httpd -DFOREGROUND
Jan 12 13:40:12 192-168-1-68.node systemd[1]: Starting The Apache HTTP Server...
Jan 12 13:40:12 192-168-1-68.node httpd[16576]: [Thu Jan 12 13:40:12.614941 2017] [so:warn] [pid 16576] AH01574: module wsgi_module is already loaded, skipping
Jan 12 13:40:12 192-168-1-68.node systemd[1]: Started The Apache HTTP Server.
or
# ps aux|grep httpd
root 16576 0.0 0.0 232232 504 ? Ss 13:40 0:01 /usr/sbin/httpd -DFOREGROUND
apache 24296 10.9 4.8 542936 91500 ? S 16:29 0:16 /usr/sbin/httpd -DFOREGROUND
apache 24310 10.6 4.7 542804 89752 ? S 16:29 0:15 /usr/sbin/httpd -DFOREGROUND
apache 24343 11.2 6.5 542804 123944 ? S 16:29 0:15 /usr/sbin/httpd -DFOREGROUND
apache 24344 11.1 6.5 542804 124084 ? S 16:29 0:14 /usr/sbin/httpd -DFOREGROUND
apache 24345 11.6 6.7 542804 126616 ? S 16:29 0:15 /usr/sbin/httpd -DFOREGROUND
apache 24347 11.0 6.6 542804 125764 ? S 16:29 0:14 /usr/sbin/httpd -DFOREGROUND
apache 24377 12.0 6.7 542804 126396 ? S 16:29 0:15 /usr/sbin/httpd -DFOREGROUND
apache 24378 12.4 6.7 542804 126448 ? S 16:29 0:15 /usr/sbin/httpd -DFOREGROUND
apache 24408 12.3 6.6 542804 126032 ? S 16:29 0:14 /usr/sbin/httpd -DFOREGROUND
apache 24450 18.6 5.4 511560 102520 ? R 16:30 0:10 /usr/sbin/httpd -DFOREGROUND
apache 24458 19.4 4.7 498476 89548 ? S 16:30 0:08 /usr/sbin/httpd -DFOREGROUND
apache 24466 21.4 4.5 495424 86416 ? R 16:31 0:07 /usr/sbin/httpd -DFOREGROUND
apache 24484 0.5 0.3 236456 5760 ? S 16:31 0:00 /usr/sbin/httpd -DFOREGROUND
root 24496 0.0 0.0 112652 964 pts/0 S+ 16:31 0:00 grep --color=auto httpd
My apache servers get a request at 2 per second. Before, the numbers of httpd processes increased until the system halted. Aftering setting the MPM Prefork, it works fine.
System and Httpd Information
System:
# cat /proc/version
Linux version 3.10.0-514.2.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue Dec 6 23:06:41 UTC 2016
Httpd Version:
# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Nov 14 2016 18:04:44
Make MPM Prefork Configure
Get MPM In The Default
# sudo apachectl -t -D DUMP_MODULES |grep mpm
[Thu Jan 12 16:06:11.778080 2017] [so:warn] [pid 23727] AH01574: module wsgi_module is already loaded, skipping
mpm_prefork_module (shared)
That means mpm_prefork_module
is installed and enabled. You can change it to the mode of event
, worker
or prefork(default)
in the file 00-mpm.conf
, which file path is /etc/httpd/conf.modules.d
.
The reference of Apache MPM is Apache MPM Common Directives
Add Personal Configure
# sudo cat >> /etc/httpd/conf/httpd.conf <<-'EOF'
<IfModule prefork.c>
ServerLimit 20
StartServers 15
MinSpareServers 5
MaxSpareServers 10
MaxClients 15
MaxRequestsPerChild 25
</IfModule>
EOF
- My VM has 2GB memory and 2 Processors
Read details of this configure in the above-mentioned reference.
Restart Httpd
# sudo systemctl restart httpd.service
Inspect Status
# systemctl status httpd.service
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2017-01-12 13:40:12 CST; 2h 48min ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 16576 (httpd)
Status: "Total requests: 3625; Current requests/sec: -70.2; Current traffic: 0 B/sec"
Memory: 869.7M
CGroup: /system.slice/httpd.service
├─16576 /usr/sbin/httpd -DFOREGROUND
├─24122 /usr/sbin/httpd -DFOREGROUND
├─24125 /usr/sbin/httpd -DFOREGROUND
├─24154 /usr/sbin/httpd -DFOREGROUND
├─24157 /usr/sbin/httpd -DFOREGROUND
├─24211 /usr/sbin/httpd -DFOREGROUND
├─24219 /usr/sbin/httpd -DFOREGROUND
└─24236 /usr/sbin/httpd -DFOREGROUND
Jan 12 13:40:12 192-168-1-68.node systemd[1]: Starting The Apache HTTP Server...
Jan 12 13:40:12 192-168-1-68.node httpd[16576]: [Thu Jan 12 13:40:12.614941 2017] [so:warn] [pid 16576] AH01574: module wsgi_module is already loaded, skipping
Jan 12 13:40:12 192-168-1-68.node systemd[1]: Started The Apache HTTP Server.
or
# ps aux|grep httpd
root 16576 0.0 0.0 232232 504 ? Ss 13:40 0:01 /usr/sbin/httpd -DFOREGROUND
apache 24296 10.9 4.8 542936 91500 ? S 16:29 0:16 /usr/sbin/httpd -DFOREGROUND
apache 24310 10.6 4.7 542804 89752 ? S 16:29 0:15 /usr/sbin/httpd -DFOREGROUND
apache 24343 11.2 6.5 542804 123944 ? S 16:29 0:15 /usr/sbin/httpd -DFOREGROUND
apache 24344 11.1 6.5 542804 124084 ? S 16:29 0:14 /usr/sbin/httpd -DFOREGROUND
apache 24345 11.6 6.7 542804 126616 ? S 16:29 0:15 /usr/sbin/httpd -DFOREGROUND
apache 24347 11.0 6.6 542804 125764 ? S 16:29 0:14 /usr/sbin/httpd -DFOREGROUND
apache 24377 12.0 6.7 542804 126396 ? S 16:29 0:15 /usr/sbin/httpd -DFOREGROUND
apache 24378 12.4 6.7 542804 126448 ? S 16:29 0:15 /usr/sbin/httpd -DFOREGROUND
apache 24408 12.3 6.6 542804 126032 ? S 16:29 0:14 /usr/sbin/httpd -DFOREGROUND
apache 24450 18.6 5.4 511560 102520 ? R 16:30 0:10 /usr/sbin/httpd -DFOREGROUND
apache 24458 19.4 4.7 498476 89548 ? S 16:30 0:08 /usr/sbin/httpd -DFOREGROUND
apache 24466 21.4 4.5 495424 86416 ? R 16:31 0:07 /usr/sbin/httpd -DFOREGROUND
apache 24484 0.5 0.3 236456 5760 ? S 16:31 0:00 /usr/sbin/httpd -DFOREGROUND
root 24496 0.0 0.0 112652 964 pts/0 S+ 16:31 0:00 grep --color=auto httpd
My apache servers get a request at 2 per second. Before, the numbers of httpd processes increased until the system halted. Aftering setting the MPM Prefork, it works fine.