moiot / gravity

A Data Replication Center
Apache License 2.0
912 stars 173 forks source link

Mysql 同步到Kafka,出现item not ack #309

Closed zhanglei closed 2 years ago

zhanglei commented 3 years ago

数据一直卡在这里,使用场景全量从mysql读数据写入kafka中,读600多万数据时就会出现这个(item not ack after ) [sliding_window] item not ack after 63.422989 seconds

重启后恢复正常,但继续跑数据时还会出现 有开启日志定位,在这段代码中出现拿到6703850这个消息时未执行pop

image image

BeforeWindowMoveForward方法的代码看了下,应该没什么大问题

zhanglei commented 3 years ago

出现这个时,整个进程 hang 死状态 试过output stdout场景时也会出现这个问题

Ryan-Git commented 3 years ago

卡死的时候看下栈 http://localhost:8080/debug/pprof/goroutine

zhanglei commented 3 years ago

image

zhanglei commented 3 years ago
image
zhanglei commented 3 years ago
image
zhanglei commented 3 years ago

从代码上分析应该是出现死锁了 PutCurrentPos与EncodeBatchPositionValue

zhanglei commented 3 years ago
image

与https://github.com/moiot/gravity/pull/296 的代码修改关系比较大,去掉这里锁就正常

Ryan-Git commented 3 years ago

我想想怎么改,去掉也有问题。

hoslo commented 3 years ago

我想怎么改,删除也有问题。

请问有解决方法了吗,我也遇到了这个问题

Ryan-Git commented 3 years ago

我想怎么改,删除也有问题。

请问有解决方法了吗,我也遇到了这个问题

临时可以先回撤这个改动 https://github.com/moiot/gravity/pull/296/files

hoslo commented 3 years ago

我想怎么改,删除也有问题。

请问有解决方法了吗,我也遇到了这个问题

临时可以先回撤这个改动 https://github.com/moiot/gravity/pull/296/files

我试过,去掉这个好像会导致数据重复的问题,还是我其他地方设置不对

Ryan-Git commented 3 years ago

重复是什么意思?

hoslo commented 3 years ago

重复是什么意思?

多个表合并到一个表中,出现了重复的数据,数据量比原表几个加起来还多

Ryan-Git commented 3 years ago

看下表结构吧,这种可能是主键/唯一键设得有问题