多线程读写mysql_记录一次多线程写入MySQL分表性能分析

笔者需从阿里云RDS同步单表4亿+的数据(泪崩),立刻用写了一段同步代码,周一到周五跑5天发现才同步到1200w数据,一天不到300w,照这个速度下去,同步过来要130天,还不能出现socket超时,想想也是醉了。所以决定上多线程分段同步,充分利用多核CPU的优势。

吃出缺少多线程架构图。

线上从上周五晚跑到周一。不到三天时间,同步了2.7亿。效果显著,下面开始分析多线程的性能。

A服务器跑tomcat,B服务器跑MySQL。

先分析B服务器的各项指标和性能。

1.top

6ef0fddfa3e3

top_b.jpg

进入交互模式,输入1查看各cpu指标

6ef0fddfa3e3

topb1.jpg

其中关键列释义如下:

us, user: 运行(未调整优先级的) 用户进程的CPU时间

sy,system: 运行内核进程的CPU时间

ni,niced:运行已调整优先级的用户进程的CPU时间

wa,IO wait: 用于等待IO完成的CPU时间

很明显,图中cpu占比非常低,其中几个cpu的IO等待时间过长。猜测瓶颈在IO上。继续往下看。

iostat -x 1

6ef0fddfa3e3

iostat-x.jpg

关键列释义:

avgrq-sz:每个IO的平均扇区数,即所有请求的平均大小,以扇区(512字节)为单位。

avgqu-sz:平均等待处理的IO请求队列长度。

%util: 工作时间或者繁忙时间占总时间的百分比。在统计时间内所有处理IO时间除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

很明显磁盘IO已经接近满负荷。

Device释义:

dm-0、dm-1、dm-2的主设备号是253(是linux内核留给本地使用的设备号),次设备号分别是0、1、2,这类设备在/dev/mapper中

[root@sell180 conf]# ll /dev/mapper/

总用量 0

lrwxrwxrwx 1 root root 7 5月 13 14:07 centos-data -> ../dm-2

lrwxrwxrwx 1 root root 7 5月 13 14:07 centos-root -> ../dm-0

lrwxrwxrwx 1 root root 7 5月 13 14:07 centos-swap -> ../dm-1

crw------- 1 root root 10, 236 5月 13 14:07 control

lrwxrwxrwx 1 root root 7 10月 10 09:03 docker-253:2-4301390401-109409ce8ed2759e6483127271832fc510f87bc42ec8069879e3ccb18ab1fcba -> ../dm-6

lrwxrwxrwx 1 root root 7 10月 9 15:58 docker-253:2-4301390401-69803b40f7be3af3cefd966f6dd616b735d8be9f8cc994031c94201d283c45fb -> ../dm-7

lrwxrwxrwx 1 root root 7 10月 10 09:03 docker-253:2-4301390401-ac3f4238962d8c9a53d05f1b0901317934e5a92f81f8124d639eb7c4d0b61ff8 -> ../dm-5

lrwxrwxrwx 1 root root 7 10月 9 15:58 docker-253:2-4301390401-d19b04116d5fe13131838b0395dd7015e7844e2c85131879dc43cd2c7bdf557e -> ../dm-8

lrwxrwxrwx 1 root root 7 10月 10 09:03 docker-253:2-4301390401-dbd692e604bf93d5bb4556af88c38310a24815a4234b25b114da12c06ddc80bb -> ../dm-4

lrwxrwxrwx 1 root root 7 5月 13 14:08 docker-253:2-4301390401-pool -> ../dm-3

IO负荷是有MySQL写入数据造成,从MySQL角度分析。

mysql> show processlist;

+------+-----------------+---------------------------+------------+---------+---------+--------------------------------------------------------+------------------------------------------------------------------------------------------------------+

| Id | Use

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值