温馨提示×

centos php运行慢咋办

小樊
50
2026-10-14 14:36:17
栏目: 编程语言

在 CentOS 上 PHP 运行慢,通常可以从 系统、PHP 配置、代码、数据库、缓存、资源 几个方向排查和优化。下面按最常见原因 → 解决办法给你一套实用思路。


一、先确认“慢”在哪里(很重要)

先别急着改配置,先定位:

top
htop
  • CPU 高 → 计算/代码问题
  • 内存吃满 → 配置或泄漏
  • 磁盘 IO 高 → 日志/文件操作
  • 网络等待 → 数据库或接口慢

二、PHP 本身常见优化

1. 安装并开启 OPcache(最重要)

90% 的 PHP 慢,不开 OPcache 是主因

yum install php-opcache -y

编辑 php.ini(路径一般是 /etc/php.ini 或 /etc/php.d/opcache.ini):

opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60

重启 PHP:

systemctl restart php-fpm

2. 使用 PHP-FPM 并优化

确认你用的是 php-fpm 而不是 mod_php

ps aux | grep php-fpm

/etc/php-fpm.d/www.conf 关键参数:

pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

根据内存调整,别开太多


三、数据库(非常常见慢点)

1. 慢查询日志

SHOW VARIABLES LIKE 'slow_query_log';

开启:

slow_query_log = 1
long_query_time = 1

2. 常见优化

  • 加索引
  • 避免 SELECT *
  • 减少循环里查数据库
  • 用 EXPLAIN 分析 SQL

四、代码层面

1. 常见拖慢点

  • file_get_contents() 外部 URL
  • 循环里调用接口
  • 大量 var_dump / 日志
  • 未关闭数据库连接

2. 使用缓存

  • Redis / Memcached
  • 页面缓存
  • 配置缓存
yum install redis -y
systemctl start redis

五、CentOS 系统层面

1. 关闭不必要的服务

systemctl list-unit-files | grep enabled

2. 调整文件描述符

ulimit -n 65535

/etc/security/limits.conf:

* soft nofile 65535
* hard nofile 65535

六、Web 服务器(Nginx / Apache)

Nginx 示例

fastcgi_cache_path /tmp/nginx_cache levels=1:2 keys_zone=phpcache:10m;

Apache

  • 用 event MPM
  • 开启 mod_deflate

七、PHP 版本问题(非常关键)

CentOS 默认的 PHP 往往很老(5.4 / 7.2)

建议升级:

yum install epel-release
yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php81
yum update php

八、快速自检清单 ✅

  • [ ] 开了 OPcache
  • [ ] 用了 PHP-FPM
  • [ ] 数据库有索引
  • [ ] 没在循环里查库
  • [ ] 用了 Redis 缓存
  • [ ] PHP 版本 ≥ 7.4

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

  1. CentOS 版本
  2. PHP 版本
  3. 用的框架(Laravel / ThinkPHP / 原生)
  4. 是接口慢还是页面慢

我可以直接给你针对性优化方案。

0 踩