我们在网络应用程序中使用spring,SOLR和Oracle + hibernate。
开发人员虽然编写了一些不正确的代码并标记了一些与SOLR通过@Transactional注释进行通信的方法。
此外我们可以在线程转储中看到线程在进入这些方法时进入等待状态或阻塞状态,即原因似乎是这些方法的事务行为
1)似乎hibernate连接虽然不是必需的,但是会导致其他线程的等待状态,但是由于连接中可用的连接有限而无法获得连接,因此导致线程的等待/阻塞状态。
2)此外,可能存在这样的情况:从连接池获得连接并且正在调用本质上是事务性的其他服务方法的服务方法线程将进入锁定状态。 这反过来又耗尽了连接池的连接
让我知道推断是否正确,如果没有,你能让我知道指针
答案 0 :(得分:0)
我认为指责@Transactional
注释或添加它的开发人员是正确的。它只适用于您的事务管理而不是连接池。
我相信连接池中的连接数应该增加。
如果仅使用@Transactional
注释的方法存在问题,并且您的连接可用性有限,则问题似乎与您遵循的连接池机制有关。请尝试增加可用的连接数。