sql连续数据库阻塞

igetnqfo  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(455)

我们有一个基于java企业的应用程序,它运行在ibmwebsphere服务器上(运行在集群环境中)。我们的应用程序使用ejb定时器调度器(websphere中的定时器用于在一天中的特定时间调度任务和事件,例如业务流程)。计时器及其相关事件存储在ejb容器中。
ejb基于调度器配置创建自己的表。
从过去几天开始,我们的计时器服务不断收到阻塞警报-下面的查询不断被阻塞-从sibowner选择me\u uuid,inc\u uuid,version,migration\u version where not me\u uuid='lock'从sibowner选择1(tablockx)
我们已经重新启动了websphere、jvm节点,以确保创建了新的计时器,但是在重新启动4-5小时之后,db阻塞开始重新出现。
如果你们中有人遇到过类似的情况并找到了补救办法,我们需要你们的帮助。

mzaanser

mzaanser1#

您提到您的服务器是群集的。您是在集群级别(一个用于集群的计时器,其中所有服务器指向相同的数据库表)还是在服务器级别(每个服务器使用不同的数据库表来存储ejb持久计时器数据)调度持久ejb计时器?如果是后者,您可能会同时在所有服务器上运行相同的计时器逻辑,这可能是锁争用的一个来源。另外,我应该指出,持久ejb计时器(persistent是默认值)不会在服务器关闭时消失,因为它们的记录会持久存在于数据库中,因此如果您有初始化逻辑来“确保创建了新的计时器”,那么您可能会得到相互竞争数据库的副本。有很多方法可以使用ejb计时器,需要更详细地了解您的配置、计时器的类型、您如何调度它们,以及您在它们内部(以及它们外部对相同数据)执行的所有事务性操作,才能正确地诊断此问题。这是我所能提供的最好的猜测,缺乏这样的细节水平。

相关问题