温馨提示×

为什么debian php慢

小樊
43
2026-09-20 10:58:15
栏目: 编程语言

Debian 上 PHP 慢,通常不是“Debian 本身慢”,而是环境配置、PHP 版本、运行方式或系统资源的问题。下面按常见原因给你一个排查清单。


一、最常见的慢因(先查这些)

1. PHP 运行方式不对(FPM / CGI / CLI)

  • Apache + mod_php:老、慢、占内存
  • Nginx + PHP-FPM:✔ 推荐
  • CGI:非常慢,应避免

✅ 检查:

ps aux | grep php

看到 php-fpm 才是正常。


2. PHP 版本太旧

Debian 稳定版常带旧 PHP:

  • Debian 11 → PHP 7.4
  • Debian 12 → PHP 8.2

✅ 建议:

  • 新项目用 PHP 8.1+
  • 老项目至少 7.4

查看版本:

php -v

3. OPcache 没开(非常关键)

没开 OPcache,PHP 每次都重新编译,慢 3–10 倍。

✅ 检查:

php -i | grep opcache

应看到:

opcache.enable => On

✅ 开启(Debian):

sudo apt install php-opcache

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

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000

重启:

systemctl restart php-fpm

4. PHP-FPM 配置不合理

常见错误:

  • pm = static 但进程太少
  • pm.max_children 太小 → 请求排队

✅ 推荐(中小站):

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

二、系统层面问题

5. 磁盘 IO 慢(云服务器常见)

  • 低配云盘
  • 日志写入多
  • session 在磁盘

✅ 优化:

session.save_handler = files
session.save_path = /dev/shm

(内存会话,快很多)


6. DNS 解析慢

PHP 里:

  • mail()
  • gethostbyname()
  • curl 没设超时

✅ 解决:

  • 用本地 DNS
  • curl 设 timeout
  • 禁用 mail()

7. 防火墙 / SELinux / AppArmor

Debian 默认 AppArmor 可能影响:

  • PHP 读文件
  • 网络访问

✅ 排查:

dmesg | grep apparmor

三、代码层面(经常被忽略)

8. 慢在代码,不是 PHP

  • 无缓存
  • 每次查数据库
  • require 上百文件
  • 循环里查 DB

✅ 工具:

apt install php-xdebug

或用:

  • Tideways
  • Blackfire

四、快速自检清单 ✅

php -v
php -i | grep opcache
ps aux | grep php-fpm
systemctl status php-fpm

五、如果你愿意,我可以更精确帮你

你可以告诉我:

  1. Debian 版本
  2. PHP 版本
  3. Web 服务(Nginx / Apache)
  4. 是 CLI 慢还是网页慢
  5. 是否有数据库

我可以直接给你针对性配置

0