在 CentOS 上调 Apache(通常是 httpd,不是 apache2,apache2 是 Debian/Ubuntu 的叫法)并发,主要从 MPM 模式、系统限制、内核参数 三方面入手。
CentOS 默认常用 prefork 或 event
httpd -V | grep -i mpm
常见:
prefork(进程模型,稳定但耗资源)worker(线程+进程)event(推荐,高并发)编辑配置:
vi /etc/httpd/conf.modules.d/00-mpm.conf
确保启用:
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
修改:
vi /etc/httpd/conf/httpd.conf
<IfModule mpm_prefork_module>
StartServers 10
MinSpareServers 10
MaxSpareServers 20
ServerLimit 2000
MaxClients 2000
MaxRequestsPerChild 5000
</IfModule>
MaxClients = 最大并发连接数
vi /etc/httpd/conf.modules.d/00-mpm.conf
LoadModule mpm_event_module modules/mod_mpm_event.so
<IfModule mpm_event_module>
StartServers 4
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 64
ServerLimit 200
MaxRequestWorkers 12800
MaxConnectionsPerChild 5000
</IfModule>
MaxRequestWorkers = 并发数
ulimit -n
修改:
vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
Apache 用户(如 apache):
apache soft nofile 65535
apache hard nofile 65535
vi /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
fs.file-max = 1000000
生效:
sysctl -p
vi /etc/httpd/conf/httpd.conf
KeepAlive Off
或限制:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
systemctl restart httpd
httpd -M | grep mpm
ss -ant | wc -l
压测:
ab -n 10000 -c 1000 http://localhost/
如果你能告诉我:
我可以给你一份 精准配置模板。