【apache】ap_thread_create: unable to create worker thread
問題
メモリには余裕があるので、Apacheの最大接続数を増やそうとしたのですが、再起動してしばらくするとApacheから応答がなくなります。
以下のエラーが出ていました。
error.log
[mpm_event:alert] [pid 16452:tid 139943910909696] (11)Resource temporarily unavailable: AH03104: ap_thread_create: unable to create worker thread [mpm_event:alert] [pid 16707:tid 139944456719680] (11)Resource temporarily unavailable: AH00480: ap_thread_create: unable to create worker thread
/var/log/messages
kernel: [ 4555.509583] cgroup: fork rejected by pids controller in /system.slice/apache2.service
答え
Apacheが作成できるスレッドの数の上限に抵触したようです。
元の値はこちら?
# cat /sys/fs/cgroup/system.slice/apache2.service/pids.max 1133
無制限にしてよかったら以下で
systemctl set-property apache2.service TasksMax=infinity
値が変わった。
# cat /sys/fs/cgroup/system.slice/apache2.service/pids.max max
こちらも影響するかも?(十分高い値なので今回のエラーとは無関係か)
# sysctl kernel.pid_max kernel.pid_max = 4194304
# cat /proc/sys/kernel/threads-max 7555
やっていたことメモ
ApacheのMPM event の設定を変えていたら発生した。
デフォルト(debian /etc/apache2/mods-enabled/mpm_event.conf)
<IfModule mpm_event_module> StartServers 2 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxRequestWorkers 150 MaxConnectionsPerChild 0 </IfModule>
ServerLimit は書いてなくてデフォルトは16。
デフォルトの設定で以下のエラーが出ていた。
[mpm_event:error] [pid 2265:tid 140293240388928] AH00484: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting
変更後
<IfModule mpm_event_module> StartServers 4 # 特に根拠なし。どうせ増える。 MinSpareThreads 75 # MaxSpareThreads と同じでいい気がする MaxSpareThreads 75 ThreadLimit 64 # どうしよう? ThreadsPerChild 64 # ThreadLimit 以下にしかならない MaxRequestWorkers 800 # ここを大きく増やした MaxConnectionsPerChild 0 </IfModule>
単純に MaxRequestWorkers を増やすと表題の「unable to create worker thread」が発生した。
TasksMax を変更するとエラーは発生しなくなった。
server-status のスコアボードはこんな感じになった。
total accepting busy idle writing keep-alive closing 0 17455 no 138 yes 12 52 122 3 3 6 16768 no 136 yes 13 51 124 3 2 7 16769 no 153 yes 5 59 127 18 3 8 14495 no (old gen) 0 yes 0 0 0 0 0 10 14260 yes (old gen) 8 no 0 0 0 0 0 12 16707 no (old gen) 0 yes 0 0 0 0 0 13 16770 no 145 yes 8 56 114 21 3 14 16771 no 135 yes 4 60 123 5 6 15 17292 no 157 yes 4 60 143 7 2 Sum 9 1 872 46 338 753 57 19
コメント