【发布时间】:2018-04-02 18:45:16
【问题描述】:
我在 Bluemix/IBM Cloud 上有一个可以运行的 Python Cloud Foundry 应用程序,它可以连接到 Bluemix/IBM Cloud 上的 DB2 on Cloud 实例,并且可以很好地与它配合使用。
但是,在很长一段时间后(我无法测量时间),与 DB2 的连接关闭,我的查询失败。我可以修改我的代码来检查这一点,但是能够调整 TCP keepalive 设置会很棒。类似于this。
非常感谢任何指针。我不确定如何调整 Python Cloud Foundry 应用程序的客户端设置。
干杯。
【问题讨论】:
-
您使用的是显式事务还是自动提交?如果您使用自动提交(即不使用事务),您是否使用 pconnect 持久连接?
-
您似乎看到一个池连接在重用时超时失败。嗯.. Keepalive 不会帮助这些情况。问题是什么导致连接关闭? Db2 on Cloud 没有任何空闲连接阈值。也许防火墙有些介于两者之间?另外,您是否使用 Db2 on Cloud 的免费层?这将有助于诊断,因为免费计划有不同的限制。
-
@mao 我昨天更改了我的代码,开始使用
ibm_db.pconnect()而不是ibm_db.connect()。希望这会有所帮助。我使用显式事务。我会在监控应用时及时通知您。 -
@SilentSteel 是的,我确实在使用 DB2 on Cloud 的免费层。一旦我注意到这种超时行为,我还将 DB2 实例绑定到我的 Cloud Foundry 应用程序。不确定这是否会有所不同。
-
如果您使用显式事务,我认为 pconnect 不适合,请查看文档。
标签: python db2 ibm-cloud cloud-foundry tcp-keepalive