You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS与Ubuntu 16.04下PHP性能差异问题排查求助

排查CentOS下PHP性能骤降的问题

这种CentOS与Ubuntu之间的PHP性能差异我之前也碰到过,结合你描述的「纯文本性能一致、仅PHP处理环节掉速」的现象,问题大概率出在CentOS特有的系统机制或者PHP相关配置差异上,咱们一步步来排查:

1. 先验证SELinux是否是元凶

你已经怀疑到SELinux了,这是CentOS和Ubuntu最核心的差异点之一,先快速验证:

  • 临时关闭SELinux:setenforce 0
  • 再次用wrk测试你的PHP echo文件,如果性能回升到和Ubuntu接近的水平,那就能确定是SELinux的限制导致的。
  • 可以用sestatus命令查看当前SELinux状态,确认是否真的关闭成功。

如果确认是SELinux的问题,建议修复而非一直关闭它:

  • 查看SELinux审计日志里的拒绝记录:grep -i deny /var/log/audit/audit.log | grep -i httpd,找出被SELinux阻止的PHP相关操作
  • 安装audit2allow工具来生成放行规则:yum install policycoreutils-python
  • 基于日志生成自定义规则:audit2allow -a -M httpd-php
  • 加载新规则:semodule -i httpd-php.pp
  • 再开启SELinux:setenforce 1,重新测试性能是否正常。

2. 检查PHP运行模式与核心配置差异

两个系统的PHP运行模式或基础配置可能不一样,这也会直接影响性能:

  • 确认PHP运行模式:分别在两个系统执行php -v结合web服务器配置,看是用mod_php、php-fpm还是其他模式,确保测试环境的运行模式一致。
  • 检查OPcache状态:OPcache对PHP性能影响极大,执行php -i | grep opcache,看CentOS是否默认开启了OPcache——Ubuntu很多发行版默认是开启的,如果CentOS没开,在php.ini里开启并配置合理的缓存参数。
  • 对比php-fpm配置(如果用fpm模式):查看/etc/php-fpm.d/www.conf里的pm.max_children、pm.start_servers、pm.max_requests等参数,是否和Ubuntu的配置差异过大,比如CentOS的子进程数设置过低会导致无法处理高并发请求。

3. 系统层面参数对比

系统内核或资源限制也可能导致性能差异:

  • 文件描述符限制:执行ulimit -n,CentOS默认的文件描述符数量可能比Ubuntu低,导致web服务器或php-fpm无法同时处理足够的请求,可以修改/etc/security/limits.conf来调高限制。
  • 内核TCP参数:对比两个系统的TCP连接相关参数,比如sysctl net.ipv4.tcp_tw_reuse、sysctl net.ipv4.tcp_tw_recycle、sysctl net.core.somaxconn,这些参数会影响高并发下的连接处理能力,确保CentOS的配置和Ubuntu一致或更优。

4. Web服务器配置对比

最后检查web服务器的配置差异:

  • 如果用Apache,对比httpd.conf里的KeepAlive、MaxRequestWorkers、MaxConnectionsPerChild等参数,确保CentOS的并发处理能力配置和Ubuntu匹配。
  • 如果用Nginx,对比nginx.conf里的worker_processes(建议设置为CPU核心数)、worker_connections、keepalive_timeout等参数,调整到适合高并发的设置。

按照这个顺序排查,应该能快速定位到问题所在——毕竟纯文本性能一致,说明网络和web服务器的基础能力没问题,问题肯定出在PHP处理的链路中。

内容的提问来源于stack exchange,提问作者Jeroen Bleijenberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:45:48