数据库中的总会话与WebSphere中的连接池中的设置不同



我在申请中的过去几天都面临着一个问题,该问题已经运行了几个月:我已经在WebSphere Application Server中配置了连接池,没有最大连接到20,min Connection 1,Reap Time 180 sec,未使用的时间1800 sec,在我的应用程序的数据源(Oracle)中为0秒老化。从过去的几天开始,我们看到了一个问题,即在早晨突然开始在应用程序中获得超时,然后遵循一种奇怪的行为,我们没有任何例外,但是用于运行过程的可召唤语句即使数据返回所有执行的结果,即使数据db中是否存在。

在开始发生问题时,系统外部或系统错误日志中没有例外。我们只能看到一个例外是一个过时的连接例外,一个数据库会话杀死异常

java.sql.SQLRecoverableException: ORA-00028: your session has been killed 
ORA-00028: your session has been killed

这发生在应用程序超时之前的6小时。

同样,在检查数据库中的NO连接时,我们只能在那里看到9个会话,尽管我们已将连接池配置为20。使用以下查询来检查Total_con:

SELECT s.machine
 , s.username 
 , count(decode(s.STATUS, 'ACTIVE', 1))   as active_con
 , count(decode(s.STATUS, 'INACTIVE', 1)) as inactive_con
 , count(*)                               as total_con
FROM v$session s
WHERE type <> 'BACKGROUND'
GROUP BY username, machine 
ORDER BY total_con DESC;

我们进行了a是服务器重新启动,这解决了该问题,并且还将数据库中的"否"会话增加到20。

所以我有2个问题:1.数据库团队说,什么会导致ORA-00028导致ORA-00028。2.正常数据库中的总会话不小于数据源中配置的最大连接,如果不是什么,则可能导致此。

  1. 数据库团队说,什么可能导致ORA-00028导致ORA-00028。

我建议检查网络上的任何防火墙设置。由于此问题是在流量最少的凌晨3点发生的,因此问题可能是由于单个连接坐了一段时间而被外部超时终止(例如防火墙闲置超时)引起的。

在评论中,您说的是TCP保持生命的时间设置为1800秒(30分钟),因此假设20分钟后,TCP连接不好。

您的配置设置为:

  • 丢弃连接,该连接在1800秒(30分钟)
  • 每180秒(3分钟)运行游泳池维护
  • 无限的时间可以打开一个连接,因为老年超时为0

使用这些设置,可以通过WebSphere汇总单个连接超过20分钟,因此我建议将老年超时设置为约900秒(15分钟)>合并超过20分钟。

请注意,可以通过WebSphere汇总连接的总时间是:

aged_timeout + reap_time = max_pooled_connection_time

您总是想要firewall_timeout > max_pooled_connection_time

  1. 正常的数据库中的总会话不小于数据源中配置的最大连接,如果不是什么,则可能导致此。

是的,这是完全正常的,理想的。WebSphere将根据需要泳池连接,最大池尺寸。一旦始终达到最大池尺寸,性能瓶颈就会开始发生。

最新更新