阅读量:2
Ubuntu 上提升 Apache 并发处理能力的实用方案
一 选择合适 MPM 并调整关键参数
- 选择并发更高的 MPM Event(或 Worker);若使用线程不安全的模块(如部分 PHP SAPI),则保留 Prefork。切换示例:sudo a2dismod mpm_prefork && sudo a2enmod mpm_event && sudo systemctl restart apache2。
- 典型并发能力估算:MaxRequestWorkers ≈ 内存 / 单进程/线程 RSS。例如单进程约 30MB,内存 4GB 时,理论值约 130(留有余量建议 ≤ 120)。
- 参考配置(按需微调):
- Prefork(适合非线程安全 PHP):
StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 120 MaxConnectionsPerChild 10000 - Event/Worker(更高并发):
StartServers 4 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestWorkers 150 MaxConnectionsPerChild 1000
调整完成后重启:sudo systemctl restart apache2。
- Prefork(适合非线程安全 PHP):
二 优化 KeepAlive 与超时减少连接开销
- 启用持久连接并控制每连接请求数与等待时间:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 2(高并发建议 1–5 秒) - 降低整体超时,避免慢客户端占用:Timeout 30(静态资源可更低,动态接口视业务而定)。
- 关闭 DNS 反向解析以减少阻塞:HostnameLookups Off。
- 修改后重启服务生效。
三 启用压缩与缓存降低负载与时延
- 启用压缩(mod_deflate):
AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript - 启用缓存与过期策略(mod_cache、mod_cache_disk、mod_expires):
sudo a2enmod cache cache_disk expires
ExpiresActive On ExpiresByType text/css “access plus 1 month” ExpiresByType application/javascript “access plus 1 month” ExpiresByType image/jpg “access plus 1 month”
CacheRoot /var/cache/apache2/mod_cache_disk CacheEnable disk / CacheDirLevels 2 CacheDirLength 1 - 适度降低日志开销:LogLevel warn。
四 连接与请求限制及安全加固
- 限制请求头与请求行大小,抵御异常或放大请求:
LimitRequestLine 192
LimitRequestFieldSize 8190
LimitHeadersCount 100 - 隐藏版本信息,降低攻击面:ServerTokens Prod。
五 监控、压测与横向扩展
- 实时监控与状态页:
- 资源监控:htop、netstat、dstat、sar。
- Apache 状态页:启用 mod_status,配置
SetHandler server-status Require local
访问 http://服务器IP/server-status 查看并发与排队情况。
- 压测与迭代:使用 ab、wrk、k6 进行基线压测,观察吞吐、P95/P99 延迟与错误率,按监控结果微调 MPM 与超时。
- 横向扩展:在 Apache 前部署 Nginx/HAProxy 做负载均衡,分摊到多台后端实例,提高总体并发上限与可用性。
以上就是关于“Ubuntu Apache怎样提高并发处理能力”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm