温馨提示×

centos lamp为何访问慢

小樊
43
2026-09-12 03:46:22
栏目: 智能运维

在 CentOS 上搭建 LAMP(Linux + Apache + MySQL/MariaDB + PHP) 后,访问速度慢是比较常见的问题。原因通常涉及 系统配置、网络、服务参数、资源瓶颈 等多个方面。下面按常见原因逐一分析,并给出对应的排查和优化建议。


一、网络与 DNS 问题(最常见)

1. Apache 的 DNS 反向解析

Apache 默认会尝试对客户端 IP 做 反向 DNS 解析,如果 DNS 不通,会明显变慢。

排查

httpd -M | grep hostname

解决 编辑 Apache 配置:

vi /etc/httpd/conf/httpd.conf

修改或添加:

HostnameLookups Off

重启:

systemctl restart httpd

2. 服务器本身网络慢

  • 带宽不足
  • 服务器在国外,国内访问慢
  • 防火墙或安全组限制

排查

ping your-server-ip
traceroute your-server-ip

二、Apache 配置问题

3. 使用的是 prefork 模式且连接数过低

CentOS 默认 Apache 多为 prefork

查看:

httpd -V | grep MPM

优化 /etc/httpd/conf/httpd.confconf.modules.d/00-mpm.conf

<IfModule mpm_prefork_module>
    StartServers      5
    MinSpareServers   5
    MaxSpareServers   10
    MaxRequestWorkers 150
    MaxConnectionsPerChild 3000
</IfModule>

如果是高并发,可考虑改为 eventworker 模式。


4. KeepAlive 设置不合理

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

Timeout 太长会占用连接。


三、PHP 性能问题

5. 未使用 OPcache(非常关键)

PHP 每次请求都重新编译,会非常慢。

安装 OPcache

yum install php-opcache

启用:

; /etc/php.ini
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000

重启:

systemctl restart php-fpm   # 或 httpd

6. PHP 错误日志 / 慢日志未关

display_errors = Off
log_errors = On

开启 PHP 慢日志:

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

四、MySQL / MariaDB 问题

7. 数据库查询慢

  • 无索引
  • SQL 写得差
  • 连接数不够

排查

SHOW PROCESSLIST;

开启慢查询日志:

slow_query_log = 1
slow_query_log_file = /var/log/mariadb/slow.log
long_query_time = 1

8. 使用 localhost 而不是 127.0.0.1

MySQL 使用 localhost 会走 socket,有时反而慢。

PHP 中:

mysqli_connect("127.0.0.1", "user", "pass");

五、系统资源问题

9. 内存不足 / 频繁 swap

free -h
top

如果 swap 使用高:

  • 增加内存
  • 优化 MySQL 参数
  • 关闭不必要服务

10. SELinux / 防火墙影响

虽然一般不会“很慢”,但某些情况下会卡。

临时测试:

setenforce 0

六、静态资源 & 浏览器问题

11. 未启用缓存 / 压缩

Apache 开启:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 30 days"
</IfModule>

七、快速自检清单 ✅

你可以按顺序确认:

  1. ✅ HostnameLookups Off
  2. ✅ OPcache 已开启
  3. ✅ DNS 正常
  4. ✅ MySQL 慢查询少
  5. ✅ 内存没爆
  6. ✅ Apache MPM 合理
  7. ✅ 静态资源有缓存

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

  • CentOS 版本(7 / 8 / Stream)
  • Apache / PHP / MySQL 版本
  • 首页慢 还是 数据库操作慢
  • 是否是 本地访问慢还是公网慢

我可以帮你做更精准的排查。

0