我们有一个基于Java的应用程序,它运行在IBM WebSphere服务器(运行在集群环境上)上。--我们的应用程序使用WebSphere调度器(WebSphere中的计时器用于在一天的特定时间安排任务和事件,例如业务流程。定时器及其关联事件存储在EJB容器中。)功能性。
EJB基于调度器配置创建自己的表。
从过去的几天开始,我们收到了定时器服务的持续阻塞警报--下面的查询是连续阻塞的--从SIBOWNER选择、INC_UUID、VERSION、MIGRATION_VERSION,其中没有从SIBOWNER选择ME_UUID _UUID=‘LOCK 1’(TABLOCKX)
我们已经重新启动了websphere,JVM节点,以确保创建了新的计时器,但是经过4-5小时的重新启动,DB阻塞开始重新出现.
需要你的帮助,如果你们中有谁遇到过类似的情况,并找到了补救办法。
发布于 2020-07-08 11:03:32
您提到您的服务器是群集的。您是在集群级别(集群的一个定时器,所有服务器都指向相同的数据库表)还是服务器级别(每个服务器使用不同的数据库表来存储EJB持久计时器数据)调度持久EJB定时器?如果是后者,您可能会同时在所有服务器上运行相同的计时器逻辑,这可能是锁争用的源。另外,我应该指出,当服务器关闭时,持久性EJB计时器(persistent是默认的)不会消失,因为它们的记录一直保存在数据库中,因此,如果您有初始化逻辑来“确保创建了新的计时器”,那么您可能会得到彼此竞争数据库的副本。使用EJB定时器有很多种方法,需要更详细地说明配置、计时器的类型、如何调度计时器,以及您在其中执行的所有事务操作(以及在相同数据上执行的事务操作)来正确诊断。这是我所能提供的最好的猜测,没有那么详细的细节。
https://stackoverflow.com/questions/62786719
复制相似问题