我机器上安装的Glassfish4服务器的最大池大小= 32个连接。在此服务器上每隔10分钟和15分钟后,我的应用程序将安排两个cron作业。服务器在2小时后崩溃,异常" java.sql.SQLException:分配连接时出错。原因:正在使用的连接等于max-pool-size和expired max-wait-time。无法分配更多连接。"
因此,我更改了JDBC连接池设置并输入了非常大的数字,只是为了看看会发生什么。
最大池大小:1000000000(10亿) 最长等待时间:300000(5分钟)
现在我的cron工作正常。
您认为将JDBC连接池属性设置得如此之高可能会导致问题吗?请告知最佳值。
答案 0 :(得分:0)
我已使用Glassfish4中的以下设置解决了此问题
初始和最小池大小:16
最大泳池大小:64
游泳池调整数量:4
空闲超时:60
最长等待时间:3000
我在Glassfish4中启用了连接泄漏监控。
启用连接泄漏监控后,当我在一段时间后检查监控数据时,我可以在某些java类的日志中看到ConnectionLeak异常。我关闭了这些类中的连接,因为它们是直接从Connection对象创建的,并且没有使用JPA实体管理器。
现在我的所有cron作业都在运行而没有服务器崩溃。