温馨提示×

debian php慢怎么破

小樊
34
2026-10-08 01:03:25
栏目: 编程语言

在 Debian 上 PHP 慢,通常可以从系统、PHP 配置、代码、数据库、运行方式几个层面来排查和优化。下面给你一套实用思路(从最常见到进阶)。


一、先确认“慢”在哪里

不要一上来就改配置,先定位:

top
htop

看是:

  • CPU 跑满?
  • 内存不够在 swap?
  • 磁盘 IO 高?
  • 还是请求一直卡着?

再看 PHP 是哪种运行方式:

php -v

常见:

  • mod_php(Apache)
  • php-fpm(Nginx / Apache)
  • CLI 脚本慢

二、PHP-FPM 调优(最常见)

1️⃣ 查看 FPM 配置

ls /etc/php/*/fpm/pool.d/

一般是 www.conf

2️⃣ 调整进程数(关键)

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

经验值:

  • 内存 2G → max_children = 20~30
  • 内存 4G → 40~60
  • 每个 PHP 进程约 30~80MB

改完:

systemctl restart php-fpm

三、PHP 本身配置优化

编辑:

/etc/php/*/fpm/php.ini

1️⃣ 关闭不必要功能

expose_php = Off
allow_url_fopen = Off   # 如不需要

2️⃣ OPcache(非常重要)

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

安装:

apt install php-opcache

四、慢日志定位“哪段代码慢”

开启慢日志

www.conf:

slowlog = /var/log/php-fpm-slow.log
request_slowlog_timeout = 2s

重启后看:

tail -f /var/log/php-fpm-slow.log

经常能看到:

  • 某个 SQL
  • 某个 file_get_contents
  • 某个循环

五、数据库是“隐形杀手”

1️⃣ 慢查询

MySQL:

SHOW VARIABLES LIKE 'slow_query%';

开启:

slow_query_log = 1
long_query_time = 1

2️⃣ 加索引

90% 的 PHP 慢,其实是 SQL 慢。


六、代码层面优化

✅ 常见慢点:

  • 循环里查数据库
  • file_get_contents(http://...)
  • 大数组 foreach
  • 没用缓存

✅ 解决:

  • 用 Redis / Memcached
  • 合并 SQL
  • 用 curl + 超时
  • 静态资源走 Nginx

七、Web 服务器配合

Nginx 示例

fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;

Apache

用 event MPM 而不是 prefork

a2dismod php*
a2enmod proxy_fcgi setenvif

八、系统层(Debian 特有)

1️⃣ 换源(国内)

sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list
apt update

2️⃣ 磁盘 IO

iotop

机械盘 → 换 SSD 立竿见影


九、一键自检清单 ✅

  • [ ] 开了 OPcache
  • [ ] FPM 进程数合理
  • [ ] 慢日志已开
  • [ ] 数据库有索引
  • [ ] 没在循环里查 DB
  • [ ] 用的是 php-fpm 不是 mod_php

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

  • Debian 版本
  • PHP 版本
  • Web 服务(Nginx / Apache)
  • 是网站慢还是 CLI 脚本慢

我可以直接帮你给一套具体配置。

0 踩