mpm_prefork: ошибка (11) Ресурс временно недоступен: AH00159: fork: невозможно обработать новый процесс
После некоторых проблем я перестроил свой сервер на новой чистой платформе Fedora 24. Это довольно занятый сервер, и теперь, когда он запускается, я получаю поток этих сообщений в apache error_log:
[Thu Dec 08 19:30:26.954314 2016] [mpm_prefork:error] [pid 379] (11)Resource temporarily unavailable: AH00159: fork: Unable to fork new process
[Thu Dec 08 19:30:36.957269 2016] [mpm_prefork:error] [pid 379] (11)Resource temporarily unavailable: AH00159: fork: Unable to fork new process
[Thu Dec 08 19:30:46.963876 2016] [mpm_prefork:error] [pid 379] (11)Resource temporarily unavailable: AH00159: fork: Unable to fork new process
[Thu Dec 08 19:30:56.967167 2016] [mpm_prefork:error] [pid 379] (11)Resource temporarily unavailable: AH00159: fork: Unable to fork new process
[Thu Dec 08 19:31:06.974127 2016] [mpm_prefork:error] [pid 379] (11)Resource temporarily unavailable: AH00159: fork: Unable to fork new process
Я попытался настроить и настроить, и, кажется, ничто не решает проблему. Я использую ту же машину, которая отлично работала под Fedora 23, поэтому я знаю, что она справится с нагрузкой.
Вот мой серверный статус apache:
Apache Server Status for example.com (via x.x.x.x)
Server Version: Apache/2.4.23 (Fedora) OpenSSL/1.0.2j-fips PHP/5.6.28
Server MPM: prefork
Server Built: Jul 18 2016 15:38:14
Current Time: Thursday, 08-Dec-2016 19:38:57 UTC
Restart Time: Thursday, 08-Dec-2016 19:29:02 UTC
Parent Server Config. Generation: 1
Parent Server MPM Generation: 0
Server uptime: 9 minutes 55 seconds
Server load: 2.86 2.38 1.48
Total accesses: 13045 - Total Traffic: 112.5 MB
CPU Usage: u485.32 s25.57 cu.05 cs.03 - 85.9% CPU load
21.9 requests/sec - 193.6 kB/second - 8.8 kB/request
165 requests currently being processed, 0 idle workers
KKKKWKKKKKKKKKKKKKKWKKKKKWKKKKKWWKKKKKKKKKKWKKKWKKKWKKKKKKKWWKKW
WKKKKKKKKKKWKKKKKKWKKKWKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKWKKK
KKKKKKKWWKKKKWKKKKKKKKWKKKKKKKKKKKWKW...........................
................................................................
................................................................
................................................................
... и это продолжается оттуда. Есть много открытых слотов, но что-то на сервере препятствует запуску новых процессов и обработке нагрузки. Однако мои пределы установлены высоко - вероятно, слишком высоко!
# ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 1546671
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 102400
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 1546671
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
Для полноты, вот мои настройки limit.conf:
* soft core unlimited
* soft nofile 102400
* hard nofile 152400
* soft sigpending 1546671
* hard sigpending 2046671
* soft stack 10240
* hard stack 14240
* soft nproc 1546671
* hard nproc 2046671
И вот мои настройки apache mpm-worker - опять же, вероятно, слишком высоки, но со всеми этими значениями ниже (или с настройками по умолчанию) проблема также существует, часто намного быстрее.
ServerLimit 8192
StartServers 40
MinSpareServers 25
MaxSpareServers 100
MaxClients 8192
MaxRequestsPerChild 10000
Очевидно, что что-то все еще ограничивает запуск новых процессов, но я озадачен тем, где искать дальше.
Любой совет приветствуется, как всегда!
Спасибо майк
1 ответ
Предварительное решение - добавить следующее в httpd.conf:
EnableMMAP Off
Это отключает отображение памяти, которое, по-видимому, очень негативно сказалось на сервере.
Для получения дополнительной информации см. http://httpd.apache.org/docs/2.4/mod/core.html.
Если это не будет решением, я буду обновлять людей здесь.
У нас была аналогичная проблема. Кажется, что
systemd
был ответственен за наши ограничения.
https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html#TasksMax=N