一言以蔽之:datax可能会因为脏数据太多导致频繁回滚操作,进一步让jvm内存触发gc,让速度降低到0,可以在sql语句中规避脏数据的写入来规避
1.问题
datax使用类型转换触发jvm gc然后降速至0失去响应。
->脏数据为什么会触发gc
->脏数据导致datax回滚写入降速
a.首先是开始就低速,发生在动态基线策略里面
b.到八十万条左右的时候就开始低速,发生在动态基线和状态评价里面,这时日志伴随脏数据记录输出。
c.id会从2049开始,是否有一个2048的块大小进行抽取,然后过一段时间才会变回1
d.出现问题在后面,也就是metaspace快满的时候,是否是jvm或者mysql内存不够用,导致sql语句的执行出现问题,但是为什么这样的问题前面没出现,后面才出现。为什么后面会出现这种问题,是sql先失效导致的脏数据,再导致jvm,还是jvmgc导致sql失效产生脏数据。
可能原因:
1.数据问题
2.jvm内存不够用
应该是这个原因,不确定是jvm的问题还是mysql的问题,如果是不转换数据格式,那么很快就能完成也没有jvm info信息的生成:
metaspace占用达到了97%,速度就降下来了,compress class space也到了90,触发了gc
2020-11-27 10:02:22.070 [job-0] INFO VMInfo -
[delta cpu info] =>
curDeltaCpu | averageCpu | maxDeltaCpu | minDeltaCpu
-1.00% | -1.00% | -1.00% | -1.00%
[delta memory info] =>
NAME | used_size | used_percent | max_used_size | max_percent
PS Eden Space | 239.66MB | 75.96% | 239.66MB | 75.96%
Code Cache | 10.74MB |<