问题现象
大数据采用
rmt
远程导出长时间卡住。
临时解决方案
使用
gccli -c + (hint)first_row
参数的控制方式。
说明:如果不加
first_row
设置,容易出现卡住的问题。每一个发送端都会向接收端
建立一个连接,用于发送数据
;
接收端为每一个发送端启动一个接收线程,实现并
行接收。当接收端
Buffer
满了以后就抢占串行写锁,如果抢占成功就会将接收线程
Bufferr
的数据写入导出文件。但如果一个接收线程抢占串行写锁后,接收
Buffer
又
有源源不断的数据,就会阻塞其它接收线程的
Flush
。当其它接收的线程
Buffer
满
后,发送端就会收到不能再发送的信息,这个时候发送端就会用一个
timeout
进行
不停的探测,而且每次
timeout
后这个值会递增。而持有串行写锁的线程,释放该
锁后。其它接收线程也都
Flush
完成后,发送端这个时候还没有到
timeout
,这时就
没有数据发送到接收端,所以造成导出卡住的假象。集群规模越大,相对越容易出
现