作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 glassfish 服务器上使用开放式 ESB。我们有一个与 as400 数据库配合使用的连接池。
每隔几天我们就会收到这个错误:分配连接时出错。原因:使用中的连接数等于 max-池大小和过期的最大等待时间。无法分配更多连接
解除cp最好的办法就是重启服务器。我们还设法设置为另一个具有相同属性的 cp。
我的问题是:有没有办法主动“告诉”cp 释放所有打开的连接?
干杯,伊兰
最佳答案
在这样做之前,找出连接未正确释放的原因。听起来好像只有一个地方忘记了这一点(finally 子句中有所有 close() 吗?)。
我强烈推荐 Michael Nygards 的“释放它!”了解使软件生产做好准备的技术。
编辑#1:如果我正确理解您的描述,您的后端程序会进入 QSYSOPR 中的 MSGW,这会导致连接挂起,直到给出响应为止,这在您的情况下几乎是永远不会。是否可以选择使用默认回复为“C”的配置文件,从而允许故障作为异常传播给您?
否则您可以为连接或整个服务器设置 24 小时的超时时间?那么至少连接最终会被关闭。虽然此解决方案无法扩展,但可以使开发更容易。
请注意,也可以有一个单独的监视线程定期查找 MSGW,并在获取回调堆栈以进行事后分析后自动向他们发送答复。
关于java - 有没有办法释放饱和的连接池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/816835/
我是一名优秀的程序员,十分优秀!