# 应用服务器磁盘io慢导致卡顿
# 问题描述
客户反馈升级后出现打开部分表单响应变慢问题,通过环境检查工具进行扫描,并根据检查结果调整修改效果不明显。
# 排查步骤
# 第一步:检查系统监控数据
登录OA系统管理员账号后台,系统维护,系统监控
检查jvm内存使用率(堆内存老年代 使用率、峰值)
gc时间,次数(根据运行天数判断,是否正常)
数据库连接池大小,峰值数;活动线程数
检查结果:正常
# 第二步:实时抓取慢请求dump分析
- 打开2个浏览器(或无痕模式)登录2个协同账号(包含一个系统管理员账号,一个复现问题的账号)
- 系统管理员账号,进入系统维护,系统监控,多次点击底部 Thread Dump 按钮,打开3~5个标签页
- 通过另一个账号实时复现问题(建议开启F12,抓取慢请求),同时依次刷新打开的 Thread Dump 标签页(注意在转圈过程刷新)
- 抓取完成后,根据F12抓的的慢请求接口,到ThreadDump页面搜索,找到对应的堆栈线程号,查看这几个dump页面中该线程执行阻塞的堆栈
- 根据堆栈看出,该线程执行都是卡在写io上,可能磁盘有性能问题
dump如下(H-67):
capability日志
# 第三步:检查磁盘性能
1、查看磁盘io性能
windows下可以通过资源管理器查看
linux下可通过iostat命令查看
一般机械硬盘io响应时间在15ms左右,磁盘队列应低于1
2、通过工具或命令实际测试磁盘读写性能
3、注意检查是否存在其他软件或进程大量占用io导致磁盘读写慢(备份、安全扫描等)
通过以上方法判断发现:磁盘吞吐量在几MB/s~十几MB/s时,其io响应时间在50ms以上,磁盘队列频繁超过1
磁盘io性能异常参考图
# 解决方法
建议更换固态硬盘
创建人:wangyxyf
修改人:wangyxyf、het