温馨提示×

centos怎样提升apache并发

小樊
34
2026-08-03 22:45:47
栏目: 智能运维

在 CentOS 上提升 Apache(httpd)并发能力,一般从 操作系统参数、Apache 配置、MPM 模式、PHP/后端优化 几个方面入手。下面给你一套实战型优化方案(适用于 CentOS 7/8,Apache 2.4)。


一、确认 Apache MPM 模式(最关键)

Apache 并发能力 80% 取决于 MPM(Multi-Processing Module)

1️⃣ 查看当前 MPM

httpd -V | grep MPM
# 或
apachectl -V | grep MPM

常见模式:

  • prefork(老、稳定,但并发差)
  • worker(线程,较好)
  • event(推荐,高并发)

生产环境强烈建议使用 event


二、切换到 event MPM(CentOS 7/8)

1️⃣ 修改 MPM 配置

vim /etc/httpd/conf.modules.d/00-mpm.conf

确保只有下面这行生效:

LoadModule mpm_event_module modules/mod_mpm_event.so

注释掉:

# prefork
# worker

2️⃣ 重启 Apache

systemctl restart httpd

三、event MPM 并发参数优化(重点)

编辑:

vim /etc/httpd/conf/httpd.conf

或新建:

vim /etc/httpd/conf.d/mpm.conf

✅ 推荐配置(4 核 8G 示例)

<IfModule mpm_event_module>
    ServerLimit             16
    StartServers            4
    ThreadLimit             256
    ThreadsPerChild         256
    MaxRequestWorkers       4096
    MinSpareThreads         128
    MaxSpareThreads         512
    MaxConnectionsPerChild  10000
</IfModule>

参数说明

参数 作用
MaxRequestWorkers 最大并发请求数(核心)
ThreadsPerChild 每个进程线程数
ServerLimit 最大进程数
MaxConnectionsPerChild 防止内存泄漏

并发 ≈ MaxRequestWorkers


四、操作系统层面优化(必做)

1️⃣ 提高文件描述符限制

vim /etc/security/limits.conf

追加:

* soft nofile 65535
* hard nofile 65535

立即生效:

ulimit -n 65535

2️⃣ 内核参数优化

vim /etc/sysctl.conf

追加:

net.ipv4.tcp_fin_timeout = 30
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1

生效:

sysctl -p

五、KeepAlive 优化(非常关键)

KeepAlive 会占用连接,高并发要限制。

KeepAlive On
KeepAliveTimeout 3
MaxKeepAliveRequests 100

高并发场景建议 KeepAliveTimeout ≤ 5


六、关闭不必要的模块(减少内存)

httpd -M

禁用不用的模块(如 WebDAV、CGI、autoindex):

vim /etc/httpd/conf.modules.d/*

七、PHP 场景优化(如果你用 PHP)

✅ 推荐方案

  • PHP-FPM + Apache(event)
  • 不要用 mod_php

PHP-FPM 配置

vim /etc/php-fpm.d/www.conf
pm = dynamic
pm.max_children = 200
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 40

八、测试并发能力

使用 ab 测试

yum install httpd-tools -y
ab -n 10000 -c 500 http://localhost/

关注:

  • Failed requests
  • Requests per second
  • Time per request

九、常见并发瓶颈排查

现象 原因
并发上不去 使用 prefork
502 PHP-FPM 不够
连接卡住 KeepAlive 太长
内存爆 MaxRequestWorkers 太高

十、推荐生产配置总结 ✅

  • ✅ MPM:event
  • ✅ MaxRequestWorkers:2000~5000
  • ✅ PHP:PHP-FPM
  • ✅ KeepAliveTimeout:3
  • ✅ 系统 ulimit + sysctl 优化

如果你愿意,可以告诉我:

  • ✅ CentOS 版本
  • ✅ Apache 版本
  • ✅ 是否使用 PHP / Java / 静态资源
  • ✅ 服务器配置(CPU / 内存)

我可以 直接给你一套“定制并发配置”

0