温馨提示×

centos如何调apache2并发

小樊
41
2026-10-08 21:08:54
栏目: 智能运维

在 CentOS 上调 Apache(通常是 httpd,不是 apache2,apache2 是 Debian/Ubuntu 的叫法)并发,主要从 MPM 模式、系统限制、内核参数 三方面入手。


一、确认 Apache MPM 模式

CentOS 默认常用 prefork 或 event

httpd -V | grep -i mpm

常见:

  • prefork(进程模型,稳定但耗资源)
  • worker(线程+进程)
  • event(推荐,高并发)

二、修改 Apache 并发配置

1️⃣ prefork 模式(默认常见)

编辑配置:

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 = 最大并发连接数


2️⃣ event / worker 模式(推荐)

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 = 并发数


三、系统层面限制(非常重要)

1️⃣ 文件描述符限制

ulimit -n

修改:

vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

Apache 用户(如 apache):

apache soft nofile 65535
apache hard nofile 65535

2️⃣ 内核参数优化

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

四、关闭 keepalive(高并发场景)

vi /etc/httpd/conf/httpd.conf
KeepAlive Off

或限制:

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

五、重启 Apache

systemctl restart httpd

六、验证并发

httpd -M | grep mpm
ss -ant | wc -l

压测:

ab -n 10000 -c 1000 http://localhost/

七、经验建议

  • 小内存机器:prefork + 控制 MaxClients
  • 高并发 Web:event + 多线程
  • 静态资源:配合 Nginx 反向代理
  • PHP:用 php-fpm,不要 mod_php

如果你能告诉我:

  • CentOS 版本
  • Apache 版本
  • 内存大小
  • 是否 PHP / 什么业务

我可以给你一份 精准配置模板。

0 踩