После заказа и настройки нового веб-сервера (64-битный, 4 виртуальных ядра, 6 ГБ ОЗУ, Ubuntu 14.04) с Apache 2.4.7 (и PHP7 fpm) в качестве события MPM, но в часы загруженного трафика Apache дает сбой. Журнал ошибок заполнен сотнями записей (даже в менее загруженные часы), например:
[Thu Jul 21 17:51:16.633617 2016] [mpm_event:crit] [pid 9290:tid 139705492948732] (22)Invalid argument: ap_queue_pop failed
[Thu Jul 21 17:51:16.633622 2016] [mpm_event:crit] [pid 9290:tid 139705492948732] (22)Invalid argument: ap_queue_pop failed
[Thu Jul 21 17:51:16.633627 2016] [mpm_event:crit] [pid 9290:tid 139705492948732] (22)Invalid argument: ap_queue_pop failed
[Thu Jul 21 17:51:18.632095 2016] [mpm_event:alert] [pid 9313:tid 139705857640190] (11)Resource temporarily unavailable: apr_thread_create: unable to create worker thread
[Thu Jul 21 17:51:19.632842 2016] [mpm_event:alert] [pid 9337:tid 139705857640190] (11)Resource temporarily unavailable: apr_thread_create: unable to create worker thread
У меня уже есть по умолчанию высокие системные ограничения через ulimit -a
:
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 1546681
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
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) 1546681
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
В запись в блоге от Mozilla тоже не помогло, поскольку мой предел уже намного выше, чем они предполагают. Я также читаю увеличить privvmpages
стоимость но он тоже высокий:
$ cat /proc/user_beancounters
Version: 2.5
uid resource held maxheld barrier limit failcnt
130922: kmemsize 173862701 175349760 9223372036854775807 9223372036854775807 0
lockedpages 0 0 1572864 1572864 0
privvmpages 3327626 3330707 3670016 3670016 31705
shmpages 92638 92638 9223372036854775807 9223372036854775807 0
dummy 0 0 9223372036854775807 9223372036854775807 0
numproc 279 363 850 850 0
physpages 356751 363453 0 1572864 0
vmguarpages 0 0 1835008 1835008 0
oomguarpages 121370 121370 1572864 1572864 0
numtcpsock 69 72 9223372036854775807 9223372036854775807 0
numflock 11 12 9223372036854775807 9223372036854775807 0
numpty 2 2 9223372036854775807 9223372036854775807 0
numsiginfo 0 63 9223372036854775807 9223372036854775807 0
tcpsndbuf 1368640 1445072 9223372036854775807 9223372036854775807 0
tcprcvbuf 1938112 1987264 9223372036854775807 9223372036854775807 0
othersockbuf 233512 241968 9223372036854775807 9223372036854775807 0
dgramrcvbuf 0 0 9223372036854775807 9223372036854775807 0
numothersock 148 150 9223372036854775807 9223372036854775807 0
dcachesize 61545508 61876256 9223372036854775807 9223372036854775807 0
numfile 2133 2280 9223372036854775807 9223372036854775807 0
dummy 0 0 9223372036854775807 9223372036854775807 0
dummy 0 0 9223372036854775807 9223372036854775807 0
dummy 0 0 9223372036854775807 9223372036854775807 0
numiptent 338 338 9223372036854775807 9223372036854775807 0
$ free -m
total used free shared buffers cached
Mem: 6144 1823 4320 361 0 1553
-/+ buffers/cache: 270 5873
Swap: 1024 0 1024
Сайт получает в общей сложности до 500 000 запросов в день, но раньше он работал на более старом (программное и аппаратное обеспечение) и меньшем сервере (половина ресурсов) без каких-либо проблем (ресурсов). Мои настройки mpm-события:
<IfModule mpm_event_module>
StartServers 5
ServerLimit 32
MinSpareThreads 60
MaxSpareThreads 200
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 800
MaxConnectionsPerChild 20000
</IfModule>
Нагрузка обычно составляет около 0,05, а оперативная память часто используется не более 10%. Есть идеи, что я делаю неправильно?
(Небольшое примечание: люди используют эту услугу бесплатно, а я построил ее в свободное время.)