讲师中心 微信公众号
AI工具推荐 视频效率加速

audit.log 写满导致系统卡死的 audit_backlog_wait_time 与 backlog_limit

夏浩吖_2767

夏浩吖_2767

发布时间:2026-01-31 19:06:56

|

713人浏览过

|

来源于php中文网

原创

audit_backlog_wait_time 仅在 backlog 队列满但未超 audit_backlog_limit 时生效;一旦触发“backlog limit exceeded”,内核直接丢弃事件,该参数完全不参与流程。

audit.log 写满导致系统卡死的 audit_backlog_wait_time 与 backlog_limit

audit.log 写满时 audit_backlog_wait_time 不生效?先看内核是否真在等

很多运维遇到 audit.log 满盘、auditd 停写、系统响应变慢甚至卡死,第一反应是调大 audit_backlog_wait_time。但实际中这个参数常常“没用”——因为内核根本没走到等待逻辑。它只在 backlog 队列满且 audit_backlog_limit(注意不是 backlog_limit)未被突破时才起作用;一旦队列溢出触发丢弃策略(auditctl -e 2 锁定后默认丢弃),内核就直接 drop event,连等都不等。

验证方法:

auditctl -s | grep -E "(backlog|enabled)"
确认当前 backlog_limit 值和 enabled 状态;再查 dmesg | grep audit,若看到 audit: backlog limit exceeded,说明已丢弃,audit_backlog_wait_time 此时完全不参与流程。

backlog_limit 和 audit_backlog_wait_time 的真实作用边界

backlog_limit 是内核 audit subsystem 中的硬队列长度(单位:条目数),默认 8192;audit_backlog_wait_time 是每个 audit 事件在队列中最多等待的微秒数(us),默认 6000000(即 6 秒)。两者配合逻辑如下:

  • 当 audit 队列未满,新事件入队,不触发等待或丢弃
  • 当队列已满,且 audit_backlog_wait_time > 0,内核会循环尝试等待空位,超时则丢弃该事件
  • 若 audit_backlog_wait_time == 0,队列一满就立即丢弃(最激进)
  • 若 audit_backlog_wait_time (如 -1),表示无限等待——但这极易导致进程 hang 住,尤其在高 syscall 频率场景(如编译、容器启动)

关键点:backlog_limit 控制容量,audit_backlog_wait_time 控制单次等待耐心,但**不控制日志落盘速度**。日志写满本质是 auditd 处理慢 + 磁盘空间不足 + 规则太宽泛,调这两个参数只是“缓震”,不是根治。

audit.log 爆满时真正该优先检查的三件事

别急着改内核参数。先确认以下三项,它们比调 audit_backlog_wait_time 更直接影响系统是否卡死:

AI舌诊面诊问诊医疗系统+诊疗商城系统源码
AI舌诊面诊问诊医疗系统+诊疗商城系统源码

AI 舌诊面诊问诊医疗系统 + 诊疗商城系统源码是一套结合 AI 辅助诊断与商品转化的健康类程序,基于浩创云、ThinkPHP(PHP)开发,支持微信服务号与 H5 端,适合做中医舌诊面诊问答、健康建议推送以及配套诊疗商品的运营。

下载
  • auditctl -l 查规则数量和匹配频率——一条 -a always,exit -F arch=b64 -S execve 在 busy 进程上每秒可产数百事件
  • ls -lh /var/log/audit/audit.log + df -h /var/log/audit 确认磁盘是否真满,以及 logrotate 是否失效(检查 /etc/logrotate.d/auditd 和 systemctl status logrotate)
  • ps aux | grep auditd 看 auditd 进程是否 zombie 或 high CPU,再用 strace -p $(pgrep auditd) -e trace=write,fsync 看它是否卡在写磁盘或 sync 上

常见陷阱:把 backlog_limit 调到 65536 后发现卡得更狠——因为大量事件堆积在内存队列里,反而加剧内存压力和调度延迟。

临时缓解与长期配置建议

若已卡死,优先执行:

  • 手动轮转日志:service auditd rotate 或 auditctl -R /etc/audit/rules.d/*.rules(重载规则清空队列)
  • 紧急限流:auditctl -e 1(设置为不可修改但允许丢弃),再 auditctl -s | grep enabled 确认返回值为 1
  • 缩小规则范围:删掉 -F key= 以外的宽泛规则,尤其是无 -F arch= 限定的 execve 监控

长期配置必须同步做三件事:启用 logrotate 的 delaycompress 和 maxsize、在 /etc/audit/auditd.conf 中设 max_log_file = 50M 和 num_logs = 5、用 auditctl -e 2 锁定规则防误操作。内核参数只作为兜底:建议 backlog_limit = 16384,audit_backlog_wait_time = 1000000(1 秒),避免无限等待。

真正难处理的是那些既不能关 audit、又必须全量记录 execve 的合规场景——这时 backlog 参数调优只是表象,背后得靠异步日志转发(如 auditd + audispd + kafka)或 eBPF 替代方案来解耦内核事件生产与用户态消费。

热门AI工具

更多
AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

相关专题

更多
kafka消费者组有什么作用
kafka消费者组有什么作用

kafka消费者组的作用:1、负载均衡;2、容错性;3、广播模式;4、灵活性;5、自动故障转移和领导者选举;6、动态扩展性;7、顺序保证;8、数据压缩;9、事务性支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2846

2024.01.12

kafka消费组的作用是什么
kafka消费组的作用是什么

kafka消费组的作用:1、负载均衡;2、容错性;3、灵活性;4、高可用性;5、扩展性;6、顺序保证;7、数据压缩;8、事务性支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

630

2024.02.23

rabbitmq和kafka有什么区别
rabbitmq和kafka有什么区别

rabbitmq和kafka的区别:1、语言与平台;2、消息传递模型;3、可靠性;4、性能与吞吐量;5、集群与负载均衡;6、消费模型;7、用途与场景;8、社区与生态系统;9、监控与管理;10、其他特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

604

2024.02.23

Java 流式处理与 Apache Kafka 实战
Java 流式处理与 Apache Kafka 实战

本专题专注讲解 Java 在流式数据处理与消息队列系统中的应用,系统讲解 Apache Kafka 的基础概念、生产者与消费者模型、Kafka Streams 与 KSQL 流式处理框架、实时数据分析与监控,结合实际业务场景,帮助开发者构建 高吞吐量、低延迟的实时数据流管道,实现高效的数据流转与处理。

670

2026.02.04

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

5967

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2548

2023.08.10

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

0

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn