温馨提示×

ubuntu apache日志为何过大

小樊
44
2026-10-12 09:16:24
栏目: 智能运维

在 Ubuntu 上,Apache 日志(通常是 access.log 和 error.log)变得过大,一般由以下几类原因造成:


一、访问量过大或异常流量

  1. 正常高访问量

    • 网站流量大,访问日志持续增长
    • 未做日志切割(如 logrotate 未生效)
  2. 爬虫 / 机器人频繁访问

    • 搜索引擎、恶意爬虫、扫描器
    • 每秒大量请求,日志迅速膨胀
  3. 被攻击或扫描

    • CC 攻击、暴力破解
    • 扫描敏感路径(wp-login.php、/admin 等)

二、日志级别设置过低

  1. error.log 过大
    • LogLevel 设置过低(如 debug、info)
    • 正常请求也记录大量调试信息

常见配置:

LogLevel warn

不建议长期使用 debug


三、未启用日志轮转(logrotate)

Ubuntu 默认有 logrotate,但可能:

  • 被禁用
  • 配置被修改
  • 磁盘满导致轮转失败

检查:

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

四、记录了不必要的信息

  1. 访问日志格式过详细

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    

    如果不需要 Referer / User-Agent,可简化

  2. 记录了静态资源

    • 图片、js、css 也写日志
    • 可通过 <FilesMatch> 关闭

五、错误重复写入

  • PHP / 应用报错循环
  • 重定向死循环
  • 配置错误导致大量 500/404

六、常见解决方式

1. 查看日志大小

du -sh /var/log/apache2/*

2. 检查是什么在写

tail -f /var/log/apache2/access.log

3. 启用/修复 logrotate

logrotate -d /etc/logrotate.d/apache2

4. 限制日志大小(示例)

CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog

5. 使用压缩 + 保留策略

/etc/logrotate.d/apache2 中:

daily
missingok
rotate 14
compress
delaycompress
notifempty

如果你愿意,可以贴出:

  • 日志大小
  • apache2.conf 或虚拟主机日志配置
  • 是否有异常访问样例

我可以帮你具体分析是哪一类原因。

0 踩