我们将Ubuntu 16 LTS用作具有apache2.4、18GB RAM和20 cpus的网络服务器。我发出了以下命令
$ 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) 72012
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) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 72012
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
Apache版本
$ apache2 -v
Server version: Apache/2.4.18 (Ubuntu)
Server built: 2018-04-18T14:53:04
当前正在使用的Apache模块
$ a2query -M
prefork
和MPM prefork模块用于默认设置
<IfModule mpm_prefork_module>
StartServers 2
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>
我已经通过JMeter压力测试仪检查了最大的apache进程,并且最多可以扩展1500多个进程。还检查了当达到1500个进程时,RAM仍有足够的空间(即,仍然剩余9GB)。
通过以下命令标识进程计数
ps -ef | grep apache2 | wc -l
指导需要增加这1500个数字,因为我们需要坚持使用MPM_prefork模块。
答案 0 :(得分:0)
尝试在您的配置中更改 ServerLimit ,请参见here。
您还可以考虑查看apache2buddy,以获取有关调整配置的指导。
旁注
请注意,硬限制为15000。
摘录自Apache文档here
编译到服务器中的ThreadLimit 20000(或带事件的ThreadLimit 100000,带mpm_winnt的ThreadLimit 15000)有硬限制。这样做是为了避免错别字引起的令人讨厌的影响。要使其进一步超过此限制,您将需要修改mpm源文件中的MAX_THREAD_LIMIT值并重建服务器。