笔者需从阿里云RDS同步单表4亿+的数据(泪崩),立刻用写了一段同步代码,周一到周五跑5天发现才同步到1200w数据,一天不到300w,照这个速度下去,同步过来要130天,还不能出现socket超时,想想也是醉了。所以决定上多线程分段同步,充分利用多核CPU的优势。
吃出缺少多线程架构图。
线上从上周五晚跑到周一。不到三天时间,同步了2.7亿。效果显著,下面开始分析多线程的性能。
A服务器跑tomcat,B服务器跑MySQL。
先分析B服务器的各项指标和性能。
1.top
top_b.jpg
进入交互模式,输入1查看各cpu指标
topb1.jpg
其中关键列释义如下:
us, user: 运行(未调整优先级的) 用户进程的CPU时间
sy,system: 运行内核进程的CPU时间
ni,niced:运行已调整优先级的用户进程的CPU时间
wa,IO wait: 用于等待IO完成的CPU时间
很明显,图中cpu占比非常低,其中几个cpu的IO等待时间过长。猜测瓶颈在IO上。继续往下看。
iostat -x 1
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