Kafka怎么排查数据日志写入磁盘挂起由于物理磁盘IO被撑满

风伟姑娘_6116

风伟姑娘_6116

2026-11-03

680人浏览

原创

Kafka日志写入挂起根因是物理磁盘IO饱和,需从设备层反向定位真实IO路径:先用iostat -x 1综合%util、await、avgqu-sz判断是否真饱和,再用pidstat -d 1锁定高写进程,结合lsof和/proc/PID/io定位热点.log文件,最后排查Kafka配置、云盘配额、文件系统atime等协同性问题。

kafka怎么排查数据日志写入磁盘挂起由于物理磁盘io被撑满

直接结论:Kafka 日志写入挂起不是 Kafka 自身故障,而是物理磁盘 IO 已饱和,必须从设备层反向定位到具体写入源——不能只查 Kafka 进程,要查它背后的真实 IO 路径。

iostat -x 1 看清是不是真“满”,别被 %util 带偏

很多人看到 %util = 100% 就断定磁盘打满,但 NVMe 盘或高队列深度场景下,%util 高可能只是请求短、并发密;而真正卡住业务的是 await 和 avgqu-sz。必须三者合看:

  • 如果 %util 高 + await avgqu-sz log.flush.interval.messages 设太小)或副本同步压测导致的瞬时写放大
  • 如果 %util 高 + await > 50ms + avgqu-sz > 8 → 物理 IO 确实拥堵,进入下一步排查
  • 特别注意 r_await 和 w_await 分离:Kafka 写挂起时,w_await 通常远高于 r_await,说明问题在写路径

pidstat -d 1 锁定真实写盘进程,警惕“伪 Kafka 进程”

pidstat -d 1 能暴露实际产生写 IO 的进程,但要注意 Kafka Broker 进程(如 kafka-server-start.sh)本身不直接写磁盘,真正落盘的是它的 JVM 线程(如 LogFlusher、LogCleaner),而这些线程在 pidstat 中会归到 JVM 进程名下,PID 不变。所以重点看:

  • 哪个 PID 的 kB_wr/s 持续 > 50MB/s?记下该 PID
  • 用 ps -p PID -o comm= 确认是否为 Kafka JVM 进程(如 java)
  • 用 cat /proc/PID/cmdline | tr '\0' '\n' | grep kafka 验证是否 Kafka 启动命令
  • 警惕同主机其他进程:比如日志采集 agent(filebeat、fluentd)正在 tail 大量 Kafka 日志文件,也会触发相同路径的写放大

lsof + /proc/PID/io 定位到具体日志分段文件

Kafka 的写 IO 最终落在 .log 文件上,但一个分区下有多个 LogSegment,必须确认是哪个文件在高频写入:

Transor沉浸式翻译
Transor沉浸式翻译

Transor沉浸式翻译是一款AI翻译工具,AI翻译工具,提供多场景实时翻译服务。

下载
  • 先用 lsof -p PID | grep '\.log$' 找出 Kafka 进程打开的所有 .log 文件路径
  • 再查每个文件的写频次:cat /proc/PID/io | grep write_bytes —— 注意这不是实时值,是累计值,需间隔几秒两次采样做差
  • 结合 Kafka 目录结构判断热点:例如 /data/kafka-logs/order-topic-0/00000000000000123456.log 写量突增,说明该 LogSegment 正在接收新消息,且可能因 log.segment.bytes 设置过大或消息体过大,导致单个 .log 文件长期不滚动,持续写入同一文件引发局部 IO 热点
  • 若发现大量 .log 文件同时被写(如多个分区都处于活跃写状态),说明是整体吞吐过高,而非单点异常

检查 Kafka 配置与磁盘后端协同性,特别是云环境

很多“IO 打满”其实是配置和硬件不匹配的结果,尤其在云盘场景下:

  • log.flush.scheduler.interval.ms 和 log.flush.interval.messages 如果设得太小(如 1000/1),会导致频繁 fsync,把随机小写放大成大量同步 IO,在云盘(尤其是 gp3/gp2)上极易触发限流,表现为 await 骤升但带宽未跑满
  • 云盘 IOPS/吞吐配额是否被其他实例共享?比如 AWS EBS 同一宿主机上的邻居实例突发写入,会拖慢你的 Kafka 实例——此时本机 iostat 看不到异常进程,但控制台能看到后端 IO 等待
  • 检查磁盘是否启用了 barrier 或 cache=none:Kafka 推荐关闭页缓存(log.flush.offset.checkpoint.interval.ms 配合 page cache bypass),但如果底层存储不支持 direct IO,反而会因内核重试造成 IO 延迟累积
  • SSD 寿命告警或坏块重映射也会表现为持续高 await 和低 %util,此时 smartctl -a /dev/sdX 可能显示 Reallocated_Sector_Ct 异常

最易被忽略的一点:Kafka 日志目录所在文件系统是否开启了 atime 更新?哪怕只是读取 .index 文件,也会触发元数据写入。在高吞吐场景下,这个看似微小的副作用会让 ext4 的 journal 写入量翻倍。临时禁用:mount -o remount,noatime /data,观察 IO 是否回落。

相关文章

Kafka Eagle可视化工具
Kafka Eagle可视化工具

Kafka Eagle是一款结合了目前大数据Kafka监控工具的特点,重新研发的一块开源免费的Kafka集群优秀的监控工具。它可以非常方便的监控生产环境中的offset、lag变化、partition分布、owner等,有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

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

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

2024.01.12

3106

5

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

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

2024.02.23

690

5

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

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

2024.02.23

664

5

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

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

2026.02.04

710

32

Tailwind CSS 如何制作导航栏和卡片
Tailwind CSS 如何制作导航栏和卡片

用 Tailwind CSS 制作导航栏和卡片,可先搭建语义化结构,再组合 Flex、Grid、间距、圆角与阴影类。这里整理横向导航、移动端菜单、卡片网格及悬停效果的相关文章,帮助你把常见页面组件做得清晰且适配不同屏幕。

2026.11.03

0

17

Tailwind CSS 响应式布局怎么写
Tailwind CSS 响应式布局怎么写

Tailwind CSS 响应式布局通常从移动端样式写起,再用 sm、md、lg 等前缀调整不同屏幕宽度下的网格、间距和导航。本专题整理断点配置、Grid 与 Flex 自适应布局及常见溢出问题,帮助你逐步完成多设备适配。

2026.11.03

0

19

Tailwind CSS 常用类名怎么记
Tailwind CSS 常用类名怎么记

Tailwind CSS 类名很多,先按布局、间距、文字、颜色和状态分组记忆,再通过官方文档检索具体写法。本专题结合类名排序、动态拼接失效、自定义实用类等问题,帮助你建立常用类名的速查方法。

2026.11.03

0

12

码上飞入口地址合集
码上飞入口地址合集

本专题汇总了码上飞(CodeFlying)的官方入口地址合集,涵盖官网主站及网页版在线使用入口,支持注册登录后直接在线体验零代码AI应用生成。同时整理了APP端下载渠道与小程序入口,助你快速访问平台,通过自然语言描述需求即可生成应用、小程序或网站。

2026.11.03

0

10

Uvicorn 报错与问题解决教程
Uvicorn 报错与问题解决教程

本专题汇总了Uvicorn服务器常见问题与报错解决的教程合集,涵盖启动失败、端口占用、模块导入错误、事件循环冲突及热重载失效等典型故障的排查思路。同时整理了多进程与Worker配置、SSL/HTTPS证书报错、跨域与代理配置等实战解决方案,助你快速定位并解决Uvicorn运行中的各类问题。

2026.11.02

20

14

热门下载

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

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习