jdb2-io-high

8 篇文章 0 订阅
4 篇文章 0 订阅

jdb2-io-high

在一台 EC2(c5.xlarge) 、系统 ubuntu16.04,使用 docker 运行 mysql 和 java 程序

java 程序执行类似如下的 sql

START TRX
INSERT order (id, ..., ...)
COMMIT;

START TRX
UPDATE asset set ... = ... WHERE user_id = #{id}
COMMIT;

START TRX
UPDATE order set ... = ... WHERE id = #{id}
COMMIT;

上诉的 SQL 在 java 程序运行开头的一段时间(例如 30 分钟内),其执行时间是稳定 10ms 以内的。

执行一段时间后,执行平均时间突然变为 100ms左右,执行时间范围变成 50ms ~ 200ms, 有一些峰值是达到 500ms

如下图展示,在某个时间点,mysql 的事务执行时间突然进入一个"高原"。
在这里插入图片描述
mysql 事务执行时间 进入 “高原” 的时候,也发现 磁盘的 io 被沾满(使用 iostat 命令),
但是 磁盘的写入数据量减少了,如下图红色箭头标注。
在这里插入图片描述
然后使用 iotop 发现一个进程 jbd2/nvme0n1p1-,其中 nvme0n1p1 是 EC2 的系统盘,200G(SSD)

这个 jbd2 进程占用了 90% 以上的 IO,但是读写量十分少,

我按照关键字:“jbd2 io high” 的关键字搜索,得到了如下的几篇文章

根据相关的搜索,我猜测,由于这个进程占用了大部分的磁盘 IO,导致 mysql 事务落地到磁盘的耗时变多。我看大多数文章都是说这个可能是 ubuntu16.04 内核 bug,升级内核版本应该可以解决。

最终是将系统升级到 ubuntu18.04。

如果升级到 ubuntu 18.04以及升级内核还没有效果,参考如下文章

2018年第九周-解决因jbd2导致Linux性能过低问题

性能分析之又见jbd2引起IO高

解决TiKV节点JBD2进程I/O占用高的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值