Apache在CentOS上如何优化PHP
导读:CentOS 上 Apache + PHP 的优化实践 一 架构选择与基础准备 优先采用 Apache MPM event + PHP-FPM(FastCGI),在高并发下较 mod_php 更省内存、更稳定;安装组件示例:sudo yu...
CentOS 上 Apache + PHP 的优化实践
一 架构选择与基础准备
- 优先采用 Apache MPM event + PHP-FPM(FastCGI),在高并发下较 mod_php 更省内存、更稳定;安装组件示例:
sudo yum install httpd php-fpm -y。 - 启用必要模块:
mod_proxy、mod_proxy_fcgi、mod_deflate;按需启用缓存与过期模块:mod_cache、mod_expires。 - 启动与开机自启:
sudo systemctl enable --now httpd php-fpm;放行防火墙:sudo firewall-cmd --permanent --add-service=http --add-service=https & & sudo firewall-cmd --reload。 - 保持系统与组件更新:
sudo yum update -y,及时获得安全与性能修复。
二 Apache 关键调优
- 连接与复用
- 开启长连接:
KeepAlive On;建议MaxKeepAliveRequests 100、KeepAliveTimeout 5(按业务 RTT 微调)。
- 开启长连接:
- 并发与进程模型(MPM event 示例)
- 核心并发:
MaxRequestWorkers 150(示例值,需结合内存与压测校准)。 - 启动与弹性:
StartServers 5、MinSpareServers 5、MaxSpareServers 10。 - 稳定性控制:
MaxRequestsPerChild 0(不限制生命周期,视内存泄漏情况可改为 10000+)。
- 核心并发:
- 传输与缓存
- 启用压缩:在虚拟主机或全局配置中加入
< IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript < /IfModule> - 启用缓存与过期:按需启用
mod_cache/mod_expires,为静态资源设置合理Cache-Control与Expires头。
- 启用压缩:在虚拟主机或全局配置中加入
三 PHP 与 PHP-FPM 调优
- 启用并配置 OPcache(建议写入
/etc/php.d/opcache.ini或php.ini)[opcache] zend_extension=opcache.so opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 - PHP 运行时参数(按应用需求调整)
memory_limit = 128M(示例);max_execution_time = 30;上传相关:upload_max_filesize = 20M、post_max_size = 20M。
- PHP-FPM 进程池(示例值,需压测校准)
- 监听:
listen = /run/php-fpm/www.sock(或127.0.0.1:9000);user = apache、group = apache。 - 动态管理:
pm = dynamic;pm.max_children = 50、pm.start_servers = 5、pm.min_spare_servers = 5、pm.max_spare_servers = 35;request_terminate_timeout = 30s。
- 监听:
- 将 PHP 请求转发至 PHP-FPM(虚拟主机示例)
如使用 Unix Socket,可写为:< FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" < /FilesMatch>SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost/var/www/html"。
四 数据库与缓存层优化
- 数据库:为高频查询字段建立合适索引,避免
SELECT *,优化慢查询;合理设置连接池与超时;必要时使用持久连接降低握手开销。 - 应用缓存:引入 Redis 或 Memcached,缓存热点数据、配置与页面片段,显著降低数据库压力。
- 内容分发:将静态资源(图片、CSS、JS、视频)托管至 CDN,减少源站带宽与时延。
五 监控、压测与迭代
- 监控与状态:启用 mod_status 观察
BusyWorkers、IdleWorkers、请求耗时等;结合top/htop、vmstat、iostat定位 CPU、内存、I/O 瓶颈。 - 压测与校准:使用 ab(Apache Bench)或
wrk进行基准测试,围绕MaxRequestWorkers、pm.max_children、KeepAliveTimeout等参数迭代;逐步加压并观察错误率、P95/P99 延迟与内存占用。 - 变更流程:任何参数调整前备份配置,先在非生产环境验证;上线后持续观察并滚动微调。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Apache在CentOS上如何优化PHP
本文地址: https://pptw.com/jishu/767784.html
