谁遇到Db.batchUpdate问题,麻烦提供一个思路!


jfinal5.1.6,数据库mysql8,操作系统ubuntu20.04,超融合服务器里创建的虚拟机,64G内存,1T硬盘,16cpu。

系统里有个功能是java代码组织了大约2000个左右的record的list,然后调用Db.batchUpdate批量更新库里的数据。

开发环境和客户生产环境下,这个Db.batchUpdate执行会在1秒左右执行完返回。

但从某一天开始,生产环境突然这个Db.batchUpdate需要执行1分钟甚至2分钟才能执行完。严重影响系统运行的效率。

我们把生产环境的数据库备份到我们开发的数据库服务器上,照样是1秒左右就能执行完。

试着在生产环境新建了一个虚拟机,重新安装mysql8,把数据库恢复到新虚拟机上,情况依旧,仍然是需要1分钟甚至2两分钟才能执行完。生产环境和我们开发环境唯一的区别就是生成环境有一个服务器运行flink cdc,用来捕捉mysql数据库的数据变化实现实施同步到其他数据库里。我们试着把flink停掉,情况依旧。在数据库服务器上查看cpu,磁盘io发现也没有大量的占用,磁盘空间非常充足。

排查了一周了,也没找到原因。谁遇到过这样的问题,能不能提供一个排查思路!谢谢了!

@杜福忠,@chcode@JFinal


评论区

杜福忠

2024-05-15 15:13

@冰雨 https://jfinal.com/share/2300 分享过一个在jdbcUrl中添加参数rewriteBatchedStatements=true 可以试下会提高速度不

chcode

2024-05-17 10:13

@杜福忠 这个参数会极大提高执行速度

chcode

2024-05-17 10:41

batchSize可以调整下大小 一般500-1000

hb963724769

2024-05-17 14:43

你重新安装的mysql,配置文件一样吗?贴出来看看有没有配置innodb_buffer_pool_size、innodb_log_file_size、innodb_flush_log_at_trx_commit之类的参数

hb963724769

2024-05-17 14:44

@hb963724769 还有事务隔离级别配置

zzutligang

2024-05-17 16:26

@hb963724769 这些配置都有innodb_buffer_pool_size=4G,innodb_log_file_size=8M(后面又改成32M),innodb_flush_log_at_trx_commit=2,就是上述这个状态。

zzutligang

2024-05-17 16:27

@hb963724769 jdbc驱动设置的事务隔离级别是2-TRANSACTION_READ_COMMITTED

zzutligang

2024-05-17 16:40

@杜福忠 @chcode @hb963724769 jdbc链接已经带上rewriteBatchedStatements=true这个参数。主要是生产环境已经在线运行了大半年了,一直都挺好。就4月26号后这个功能突然就卡那了,跟踪执行发现这个batchUpdate需要2分钟多才执行完。为了排查问题,生产环境新间的虚拟机操作系统和安装的mysql配置参数一模一样,也是需要执行2分钟多。但把他们的生产数据库全库备份到我们的开发服务器上,这个功能只需2秒就执行了。现在还在一头雾水中。

杜福忠

2024-05-17 22:29

@zzutligang 如果确定配置都是一样的,不能复现的话。 就重新部署一套数据库,迁移过去吧。可能是磁盘或其他硬件已经出现问题了。我曾经遇到过一次仓库异常问题,仓库里面不能新建表了,迁移到其他库就正常了,后来发现是那块磁盘坏了(阿*云服务器自装 mysql)

zzutligang

2024-05-18 12:41

@杜福忠 我让运维把数据库服务器搬到其他物理机器上试验试验!这种诡异的事情真的很难排查!

hb963724769

2024-05-20 10:40

@zzutligang 配置一样的话,确实没问题,我之前整过配置不一样的搞了一次。杜总说的磁盘坏道,扇区坏道还真有可能。因为你新建的数据库,磁盘扇区是不一样的。这样的话,你是不是要检查一下你的硬盘,要给服务器换一个新硬盘 了。 看样子你们服务器应该也是私域的吧。

zzutligang

2024-05-20 17:29

@hb963724769 生产环境都是客户自建机房,服务器都在他们自己的机房。因为他们都是私网,不允许接入公网。但现在他们的服务器是一个配置很高的物理服务器上创建的虚拟机。如果排查硬盘坏道应该是个很麻烦的事。

hb963724769

2024-05-21 08:53

@zzutligang 备份吧。不然哪天裂开了,那是真的裂开

热门反馈

扫码入社