首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >何时触发JDBC setNetworkTimeout()?

何时触发JDBC setNetworkTimeout()?
EN

Stack Overflow用户
提问于 2016-11-24 07:06:56
回答 1查看 1.1K关注 0票数 2

由于网络健康状况不佳,我在代码中遇到了几个阻塞的JDBC连接。我正在规划java.sql.Connection.setNetworkTimeout库函数。根据医生:-

设置一个或多个连接创建的对象等待数据库响应任何一个请求的最长时间。

现在,这里的要求到底是什么?我的查询需要很长时间来响应,甚至需要更长的时间来处理(我正在使用jdbc接口来处理一个大数据数据库)。那么,我需要保持这个超时时间,大于预期的查询执行时间(以防止错误触发),还是会存在保持活动的消息,并进行交换以跟踪网络连接?在这种情况下,我将保持很低的时间?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-24 07:42:04

因此,如果您的NetworkTimeout小于QueryTimeout,查询将在等待DB响应的侧线程上终止(请注意,setNetworkTimeout有Executor executor参数)将被中断。根据底层实现,NetworkTimeout 也可以取消数据库端的查询。

如果NetworkTimeout > QueryTimeout,并且查询在QueryTimeout内完成,那么不应该发生任何不好的事情。如果您遇到的问题正是在这种情况下发生的,那么您应该尝试在OS级别设置中保持TCP连接的活动,这样防火墙就不会太快地终止它们。

当涉及到保持TCP连接活动时,通常更多的是操作系统级别的设置,而不是应用程序本身。您可以阅读更多关于它(Linux) 这里的内容。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40779946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档