温馨提示×

为何Debian PHP很慢

小樊
44
2026-09-05 05:51:58
栏目: 编程语言

Debian 上 PHP “很慢”通常不是 PHP 本身的问题,而是运行方式、配置、扩展或系统环境导致的。下面按最常见原因 → 排查方法 → 解决建议来说明。


一、最常见原因(80% 都在这里)

1. 使用了 mod_php 而不是 PHP-FPM

很多 Debian 默认 Apache 装的是 libapache2-mod-php,而不是 PHP-FPM。

问题:

  • 每个请求都加载完整 Apache 进程
  • 内存占用高
  • 并发能力差
  • 响应明显慢

解决:

apt install php-fpm
a2dismod phpX.X
a2enmod proxy_fcgi setenvif
a2enconf phpX.X-fpm
systemctl restart apache2

2. PHP-FPM 进程数太少

默认 pm = dynamic,但 pm.max_children 很小。

表现:

  • 高并发时特别慢
  • 请求排队

排查:

systemctl status phpX.X-fpm

调优(示例):

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

3. OPcache 没开(非常关键)

Debian 默认 可能没启用 OPcache

检查:

php -i | grep opcache

解决:

apt install php-opcache

php.ini

opcache.enable=1
opcache.memory_consumption=128
opcache.revalidate_freq=60

二、系统层面原因

4. DNS 解析慢(最常见的“诡异慢”)

PHP 中一旦用到:

  • gethostbyname()
  • mail()
  • 某些 SDK / curl

如果 DNS 慢,PHP 会卡很久。

解决:

  • 127.0.0.1 而不是 localhost
  • 配置 /etc/resolv.conf
  • 禁用不需要的反向解析

5. 磁盘 I/O 慢(云服务器常见)

  • 低配云盘
  • 日志疯狂写
  • session 在文件里

优化:

session.save_handler = redis

mount tmpfs /var/lib/php/sessions

三、PHP 代码 / 框架原因

6. 每次请求都连数据库 / 外部 API

  • 没缓存
  • 没连接池
  • debug 模式开着

检查:

phpinfo();

看:

  • display_errors
  • xdebug

强烈建议:

  • 生产环境 关闭 xdebug
  • 关 debug

7. 使用了 Xdebug(致命慢)

php -m | grep xdebug

解决:

a2dismod xdebug

xdebug.mode=off

四、Debian 特有注意点

8. AppArmor / systemd 限制

某些情况下:

  • PHP 访问目录被限制
  • 文件权限错误导致重试

查看:

journalctl -u phpX.X-fpm

五、快速自测清单 ✅

你可以挨个看:

php -v
php -m
php -i | grep opcache
systemctl status php*-fpm
apachectl -M | grep php

六、一句话总结

Debian PHP 慢,90% 是因为:没用 PHP-FPM + 没开 OPcache + 配置保守 + DNS/IO 问题

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

  • Debian 版本
  • PHP 版本
  • Apache 还是 Nginx
  • 慢在“首屏”还是“高并发”

我可以直接帮你给一套最优配置

0