快速排查线上应用磁盘IO过高
实际开发工作,在应用中常常需要对文件进行各种读写操作,不当的文件读写操作容易导致磁盘IO过高、文件读写慢、文件资源竞争等问题,这些都可能会对整个系统产生严重影响,甚至导致系统故障。
通过在线Demo)故障注入平台,注入例如
文件读写延时200ms
等故障来模拟真实环境中产生的因磁盘IO过高问题。
本指南将展示如何使用 Kindling-OriginX 快速定位并排查应用因磁盘I/O导致故障的根因所在,同时与目前处理应用磁盘IO过高的常用方法做一简单对比。
传统方式
在实际生产环境中,应用磁盘IO过高往往都是以CPU过高,占用大量CPU资源或应用产生阻塞等故障形式表现出来,难以快速发现和定位,从而无法快速使其恢复。
使用相关工具及命名分析排查
通过pidstat、iostat、iotop、vmstat、strace等命令查看各个进程的CPU情况、IO使用情况、iowait、磁盘使用率util等相关参数,或进一步获取更详细的系统日志。针对CPU高且Load高、CPU低且Load高等多种不同的情况分别进行分析。需要对应用及操作系统相关知识都有足够的积累,且要对相关问题有丰富的经验。
通过监控工具分析
通过监控数据发现磁盘IO问题,或辅助对磁盘问题进行诊断。这种方式需要有合适的监控数据,同时受数据粒度的影响,往往适合趋势性预警,在实际线上处置过程中并不能够提供有效的帮助。
代码分析
通过代码Review的方式,对应用中涉及磁盘读写的部分进行合理规划和代码设计,尽可能减少大文件和大批量碎片文件的操作,以达到提前规避问题的发生的目的。这种方式一方面效率低,另一方面需要有丰富经验的人员参与,实际情况下这种方式也只能是提高代码质量的一种方式,并不可能成为解决应用磁盘问题的银弹。
使用Kindling-OriginX
Kindling-OriginX 对于线上应用磁盘I/O过高问题提供自动化、零侵入、高效便捷、极低性能损耗的解决方案。
针对每一条 Tracing 自动化分析
- 分类统计当下故障服务情况,清晰直观发现问题点。
- 聚合单个服务故障报告,聚焦重点问题。
智能化生成可解释的故障根因报告
-
简明扼要给出可解释的根因报告,任何人都能据此高效定位问题原因。例如本例中磁盘IO问题的根因是open文件耗时长,同时会给出导致该问题的文件信息。
-
报告包含 Trace 信息,描述、时间、耗时、TraceID等基本信息。
-
报告对节点链路调用情况及耗时数据进行详细对比分析。
-
提供节点详情、Trace 耗时情况对比及该时段对应日志。
-
提供各层级分段调用数据及单独的历史基线数据,使用户能够对代码执行的每一步都能了如指掌,通过耗时分析对问题方向提供明确指引。本例中file耗时明显高于历史基线水平,显示file操作耗时出现异常。
-
提供影响各条Trace数据的核心指标详情,帮助用户聚焦关键指标,并对关键指标数据进行下钻展示。本例判定故障根因由于文件操作耗时异常导致,则会对该数据进一步分析,并对更详细的数据进行分析展示。
-
报告中包含根因推导过程的详细数据及指标,既可还原推导过程又可帮助还原现场。例如本例会对磁盘操作的相关各类指标进行分析,用来最终确定具体根因。
Kindling-OriginX 相较于传统工具和方法,在定位和解决磁盘IO问题上提供了更快速、更智能和更自动化的解决方案。
通过在线Demo)故障注入平台,注入例如 文件读写延时200ms
等故障来模拟真实环境中产生的因磁盘IO过高问题。