温馨提示×

ubuntu apache日志为何变大

小樊
41
2026-09-21 19:18:04
栏目: 智能运维

在 Ubuntu 上,Apache 日志(通常是 /var/log/apache2/access.log 和 error.log)突然或逐渐变大,常见原因有以下几种:


1. 访问量变大(最常见)

  • 网站流量增加
  • 被爬虫频繁抓取
  • 被恶意扫描、CC 攻击、暴力请求

✅ 表现:

  • access.log 快速增长
  • 大量相似 IP 或 URL

✅ 排查:

tail -n 100 /var/log/apache2/access.log
awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | head

2. 日志级别设置过低(debug / notice)

  • ErrorLog 级别太低,会记录大量信息

✅ 检查:

grep -i loglevel /etc/apache2/apache2.conf

✅ 建议:

LogLevel warn

3. 没有启用日志轮转(logrotate)

Ubuntu 默认有 logrotate,但如果:

  • 配置被修改
  • cron / systemd timer 未运行
  • 日志被改名或权限错误

日志会一直追加,不切割。

✅ 检查:

cat /etc/logrotate.d/apache2
ls -lh /var/log/apache2/

✅ 手动测试:

logrotate -d /etc/logrotate.d/apache2

4. 错误循环(应用或重写规则问题)

  • PHP 报错循环
  • .htaccess 重定向死循环
  • 代理配置错误

✅ 表现:

  • error.log 暴涨
  • 同一错误反复出现

✅ 排查:

tail -n 50 /var/log/apache2/error.log

5. 开启了详细访问日志格式

自定义 LogFormat 包含:

  • %{Referer}i
  • %{User-Agent}i
  • 请求体信息

✅ 检查:

grep LogFormat /etc/apache2/apache2.conf

6. 静态资源或健康检查请求过多

  • 健康检查(如负载均衡)
  • 前端轮询接口

✅ 可忽略或单独记录:

SetEnvIf Request_URI "^/health" dontlog
CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog

7. 日志文件未真正释放(deleted 但仍写入)

lsof | grep deleted

如果 Apache 还持有旧文件,磁盘不会释放。

✅ 解决:

systemctl restart apache2

快速优化建议

# 确保 logrotate 正常工作
systemctl status logrotate

# 限制日志大小
# 在 logrotate 中设置:
size 100M
rotate 7

如果你愿意,可以贴出:

  • access.log 示例
  • df -h
  • ls -lh /var/log/apache2

我可以帮你精确判断是哪种原因。

0 踩