温馨提示×

怎么定位centos apache慢日志

小樊
38
2026-09-21 10:01:45
栏目: 智能运维

在 CentOS 上定位 Apache 慢请求(慢日志),可以按下面几个思路来做。


一、Apache 本身没有“慢日志”,但有相关日志

Apache 默认 没有像 Nginx 那样专门的 slow log,但可以通过以下方式定位慢请求:

1️⃣ 查看访问日志(access log)

路径通常为:

/var/log/httpd/access_log

查看响应时间字段(如果有):

tail -f /var/log/httpd/access_log

如果日志格式包含 %D 或 %T:

  • %D:请求耗时(微秒)
  • %T:请求耗时(秒)

例如:

127.0.0.1 - - [time] "GET /api HTTP/1.1" 200 1234 1050000

表示 1.05 秒


二、确认 Apache 日志格式是否包含响应时间

查看配置文件

grep -R "LogFormat" /etc/httpd/

常见默认格式:

LogFormat "%h %l %u %t \"%r\" %>s %b" common

✅ 建议改成:

LogFormat "%h %l %u %t \"%r\" %>s %b %D" combined

然后重启 Apache:

systemctl restart httpd

三、使用 mod_log_config + 慢请求过滤

找出响应慢的请求

awk '{print $NF}' /var/log/httpd/access_log | sort -n | tail

或带时间字段:

awk '{if ($NF > 1000000) print}' /var/log/httpd/access_log

四、使用 Apache + PHP 的慢日志(常见场景)

如果你是 PHP + Apache(mod_php / php-fpm):

1️⃣ PHP-FPM 慢日志(最常用)

编辑:

/etc/php-fpm.d/www.conf

启用:

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

重启:

systemctl restart php-fpm

查看:

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

✅ 这是定位 PHP 慢的最有效方式


五、使用 Apache 模块定位慢(进阶)

mod_status(实时查看慢请求)

httpd -M | grep status

启用:

<Location /server-status>
    SetHandler server-status
    Require local
</Location>

访问:

http://localhost/server-status

六、系统级定位(Apache 本身不慢)

如果是“整体慢”:

top
htop
iostat -x 1
netstat -an | grep :80 | wc -l

七、推荐组合方案 ✅

最佳实践:

  1. access_log 加 %D
  2. PHP 开 slowlog
  3. 用 tail + awk 快速筛慢请求

如果你能告诉我:

  • Apache 版本
  • 是否用 PHP / PHP-FPM
  • 是静态资源慢还是接口慢

我可以给你更精确的配置示例。

0 踩