JDBC查询超时时间设置

ClickHouse偶现 读取数据超时 产生原因 ** ClickHouse服务器在高负载下出现滞后以及ClickHouse服务器和JDBC驱动程序的超时设置不同,当我们有很多选择查询时,ClickHouse服务器的性能将大大降低,简单查询将运行30秒以上,从而导致JDBC驱动程序超时 ** ClickHouse exception, code: 159, host: xxx.xxx.xxx.xxx, port: 18123; Read timed out 解决办法 ** 设置JDBC属性: socket_timeout=300000 ** u 阅读详情

    我们有时候需要控制SQL查询的最大耗时,比如一个“执行时长”的SQL在指定时间内如果没有执行完毕,我们需要“取消”此SQL,我们知道在JDBC中Statement类可以通过setQueryTimeout()来实现此特性。

    当设置query timeout之后,JDBC客户端发送请求,并等待直到执行完成或者超时,当超时后,客户端尝试cancel当前SQL,要求mysql server中断执行,因为网络通讯需要时间,可能在客户端尝试cancel时,mysql server已经执行成功,此时请求将会返回(而不是取消);超时后取消成功,那么当前客户端调用将会抛出SQLTimeoutException。

 

    queryTimeout选项,目前不能在JDBC Url中作为properties传入,所以不能像socketTimeout、connectionTimeout参数那样可以在URL中指定。

 

一、mybatis设置timeout

    1、在mybatis-config.xml中设置:此处设置对全局的所有sql都生效,包括insert、select、update等。

 

<settings>
	<setting name="defaultStatementTimeout" value="25"/>
        <!-- 单位:秒 -->
</settings>

 

 

    2、在statement语句中设置:只对当前statement有效,select、insert、update等语句中都有timeout属性

 

<select
  id="selectPerson"
  timeout="10000" ...>

 

 

二、 JPA中设置

    1、为当前查询设定timeout:

String sql = "SELECT ...";
TypedQuery<User> query = entityManager.createQuery(sql, User.class);
query.setParameter("id", id);
//此处设置timeout,单位:毫秒
query.setHint("javax.persistence.query.timeout", 20000);

 

    2、JPA全局配置

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
	<property name="jpaProperties">
		<props>
			<prop key="eclipselink.cache.shared.default">false</prop>
			<prop key="eclipselink.weaving">false</prop>
			<prop key="javax.persistence.query.timeout”>20000<prop/>
		</props>
	</property>
</bean>

 

三、JNDI方式配置

    通常情况下,我们线上的数据库datasource管理是基于JNDI的方式,当然我们可以在JNDI中管理此选项,本文基于tomcat-pool的方式:

<Resource name="jdbc/masterDB"  jdbcInterceptors="QueryTimeoutInterceptor(queryTimeout=20000)" />
##单位:秒,默认不开启timeout 参数

 

    我们只需要在Resource配置中增加一个jdbcInterceptors即可,具体配置参见【tomcat-pool】

web项目超时方案 文章目录1. 场景描述2. 解决方案2.1 前端nginx设置2.2 后端java设置 1. 场景描述 平台使用的Greenplum(内核是postgresql8.2)集群存储大数据量数据(每天一个表大概3亿),因为数据量比较大,所以在使用上有些限制,一是操作限制;二是不限制,但是到一定时间执行不出来结果就要取消掉该查询,不能一直占用资源。 2. 解决方案 2.1 前端nginx设置 超时时间设置... 阅读详情

相关推荐

STM32CubeMX的正交编码器encoder

由于最近干活遇到需要获取正交编码的功能,所以返回来研究一下STM32CubeMX的编码器功能,之前也更新过STM32的定时器功能,但是因为之前搞平衡车的正交编码器没有搞清楚原理,就直接用了脉冲输入功能草草了事,现在也算是为之前的年轻买单了,不过看到现有的Encoder说明都比较简单,所以就当是为开发者做贡献了,我研究清楚之后来一篇博客。

ASWaterbenben的博客 1万+

JDBC的超时时间和常用配置

连接池中的连接被数据库关闭了,应用通过连接池getConnection时,都可能获取到这些不可用的连接,且这些连接如果不被其他线程回收的话,它们不会被连接池被废除,也不会重新被创建,占用了连接池的名额。案例:2019年在对数据库中间件ProxySQL滚动升级时,另一台虚机意外重启导致ProxySQL服务不可用,上层服务出现大量异常访问慢的情况的,通过jstack分析线程情况发现业务系统停止在JDBC的调用上,日志中大量的waiting状态的线程;导致服务长时间处于不可以用的状态,后经过重启服务解决问题;..

【欢迎关注公众号:冬瓜白】 1万+

告别手动操作!用Python脚本批量处理Siemens NX零件文件(导入/导出/移除参数)

本文详细介绍了如何利用Python脚本实现Siemens NX零件文件的批量处理,包括导入、导出和移除参数等操作。通过NX Open API和Python UF接口,工业设计师可以大幅提升工作效率,告别繁琐的手动操作。文章提供了完整的实战指南,涵盖环境配置、核心功能实现以及性能优化技巧,特别适合需要进行Siemens-NXUG二次开发的工程师参考。

weixin_28222493的博客 261

JDBC 设置超时时间,避免sql查询时时间过长

最近由于一些表中每条数据量过大,导致查询时一条sql(100条)过了很久都没有查出。所以遇到这种情况时可以修改sql为一条一条查。 这时需要设置超时时间: prepareStatement= con.prepareStatement(selectSql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); // 设置超时时间为30s prepareStatement.setQueryTimeout(30); resultSet = ps.exe

weixin_44930539的博客 7209

vrep小车避障算法_V-REP 多车道巡线与避障

任务概要在给定的赛道中,实现多车道的避障和视觉巡线。避障算法没有限定,可使用人工势场、RRT等路径规划算法。车体大小、赛道信息以及参考资料在此处下载。完成情况已学习并能初步使用 V-REP Python Remote API 接口,实现 Python 与 V-REP 的功能交互。已实现基于视觉传感器的多车道巡线功能。已实现基于视觉传感器的多车道避障功能。V-REP Python Remote AP...

weixin_39692037的博客 1834

Zabbix故障排查10051端口无法启动:zabbix-server.service: main process exited, code=exited, status=1/FAILURE

zabbix-server.service: main process exited, code=exited, status=1/FAILURE报错说与数据库失去连接。

" DevOps菜鸟(Xu JieHao)" 的博客 2255

MySQL JDBC的queryTimeout的一个坑

 遇到一个MySQL JDBC的queryTimeout的坑,比较恶心,算是它的BUG,也可以不算,^_^,为啥这么说?看一下下面的解释: 现象: 用同一个Connection执行大批量SQL的时候,导致了OOM现象。 细节现象描述: 1、SQL是从某个存储设备上拿到的,不会直接占用大量的内存,每次只会取最多1千条数据过去,也会判定容量不超过多少M。 2、每一批SQL执行会

一个小跳蛙 2万+

如何使你的直流电机闭环?(PID讲解)

看了看很多大佬写的PID讲解很全面也很复杂,实在是不适合很多萌新入坑,所以想按自己的理解写一篇通俗易懂的PID算法讲解

a2001444的博客 1万+

深入理解JDBC的timeout

转载自:http://blog.youkuaiyun.com/kobejayandy/article/details/46916063 恰当的JDBC超时设置能够有效地减少服务失效的时间。本文将对数据库的各种超时设置及其设置方法做介绍。 真实案例:        在遭到DDos攻击后,整个服务都垮掉了,当屏蔽了所有的DDos攻击,并恢复了网络后,业务系统却还是无法工作。通过分析系统的th

ZERO 1万+

“傻瓜”stata入门——熟悉操作界面

小白开始学习stata和matlab,零基础上手

nnpersistent的博客 4457

软件产品国际化:前后端及App多语言版本解决方案(超详细实现过程)

多语言版本解决方案是应对全球化趋势的关键策略,它通过构建灵活且可扩展的架构,支持软件产品在不同语言和文化环境下的顺畅运行与展示。此方案涵盖了前端多语言界面实现、后端多语言数据处理及大数据环境下的多语言支持等多个层面,确保公司能够高效地推出适应全球用户多样化需求的软件产品。在前端多语言界面实现方面,解决方案采用了国际化与本地化的结合方法。国际化过程确保软件的功能和代码设计能够处理多种语言和文化习惯,而本地化则针对特定地区进行界面和内容的调整。

大模型大数据攻城狮的专栏 2753

jdbc cancel mysql_JDBC查询超时时间设置

我们有时候需要控制SQL查询的最大耗时,比如一个“执行时长”的SQL在指定时间内如果没有执行完毕,我们需要“取消”此SQL,我们知道在JDBC中Statement类可以通过setQueryTimeout()来实现此特性。当设置query timeout之后,JDBC客户端发送请求,并等待直到执行完成或者超时,当超时后,客户端尝试cancel当前SQL,要求mysql server中断执行,因为网络...

weixin_42551508的博客 713

车载以太网测试-1【TC8物理层测试基础】

车载以太网物理层是车载网络的基础,负责将数字数据转换为适合在物理介质上传输的信号,并确保数据传输的可靠性、稳定性和高效性。它在车载网络系统中扮演着至关重要的角色,直接影响着车辆内部通信的性能和效率。1. 主要物理层标准车载以太网标准由IEEE 802.3和标准名称速率线缆类型编码方式应用场景100BASE-T1100 Mbps单对非屏蔽双绞线车载摄像头、传感器1 Gbps单对屏蔽/非屏蔽双绞线自动驾驶域控制器、高清视频10BASE-T1S10 Mbps单对双绞线幅移键控(ASK)

车载网络测试工程师的博客 4392

JDBC中如何处理数据库连接超时和SQL超时?

在JDBC(Java Database Connectivity)中,处理数据库连接超时和SQL执行超时是确保应用程序稳定性和性能的重要方面。

m0_46552684的博客 3778

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java设置sql查询超时

我整理的一些关于【Java,数据库】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/f2PFnN如何在Java中设置SQL查询超时 在开发应用时,设置SQL查询超时是很重要的一部分,以避免程序在执行长时间未返回的查询时阻塞。本文将带你了解如何在Java中实现SQL查询的超时设...

weixin_41177655的博客 471

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

项目mysql连接池设置超时时间_项目中数据库超时设置整理

1.背景友好的超时设置能防止网络问题或者不友好的查询(主要是慢查询)对数据库连接池的伤害,比如慢查询占用过多连接导致正常业务逻辑无数据库连接可用。所以我们需要捋一捋项目中设计到的可以设置超时时间的地方,首先看下应用于数据库之间timeout的层级关系。大体层级从下往上依次是OS SocketTimeout->JDBC Socket Timeout–>Statement Timeout-...

weixin_39800957的博客 1292

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

TIDB 中的超时问题

max_execution_time ,控制连接中 SQL 执行的超时时间,仅对“只读”语句生效,默认值是 0,即允许连接无限忙碌(一个 SQL 语句执行无限的长的时间)。但是由于 TiDB 服务是负载均衡的,为防止 KILL 命令在错误的 TiDB 节点上终止连接,需要注意的是,此变量的配置是立刻影响全局的,调大它会增加当前所有快照的生命时长,调小它也会立即缩短所有快照的生命时长。TiDB 的事务的实现采用了 MVCC(多版本并发控制)机制,当新写入的数据覆盖旧的数据时,旧的数据不会被替换掉,

weixin_43346403的博客 475

jdbc cancel mysql_关于jdbc的setQueryTimeout() 的bug和Query execution was interrupted 的调查

1、前段时间,两次开发人员提出,程序的日志里出现以下JDBC异常,当时排查MySQL数据库端在程序抛出异常时间并无异常;MySQL数据库也没有自动强制中断连接的设置,猜想是由程序的DAO层设置的运行超时,当执行超过设置秒数,就会强制杀掉连接。java.sql.SQLException: Query execution was interruptedat com.mysql.jdbc.SQLErr...

weixin_39886251的博客 1338

java mysql 查询超时_项目中数据库超时设置整理

包邮数据库系统概论第5版+教材51元(需用券)去购买 >1.背景友好的超时设置能防止网络问题或者不友好的查询(主要是慢查询)对数据库连接池的伤害,比如慢查询占用过多连接导致正常业务逻辑无数据库连接可用。所以我们需要捋一捋项目中设计到的可以设置超时时间的地方,首先看下应用于数据库之间timeout的层级关系。大体层级从下往上依次是OS SocketTimeout->JDBC Socket...

weixin_39564524的博客 1256

mysql 设置默认值_JDBC必要的Timeout设置

Transaction Timeout对数据做批量操作的时候,执行数据提交的时间做限制,超出所设置的timeout值将抛出异常。举例:我批量提交10000条数据,需要30秒,而我设置的Transaction timeout是4秒,就会抛对应异常Statement Timeoutstatement timeout用来限制语句查询执行时长timeout的值通过调用JDBC的java.sql....

weixin_39756192的博客 5202

Mysql各种超时时间理解

       笔者最近做一个项目被mysql驱动包的的超时设置给坑了,起因就是因为没设置好connection timeout 和socket timeout,导致线程全部阻塞等待,机器线程全挂起,也无法处理新的其它请求,所以做了下面一些总结。 1、常见超时 transaction timeout       设置的是一个事务的执行时间,里头可能包含多个statement,statem...

Evankaka的专栏 8146

hive-jdbc的默认超时时间被mysql超时时间覆盖

现象 hive-jdbc.2.1.1版本 在循环遍历查询数据,并且同时处理发现偶尔会出现SocketException异常,推测异常是由于超时导致的,结果验证果然超时时间被设置为了mysql的30s Error retrieving next row java.sql.SQLException: Error retrieving next row at org.apache.hive.jdbc.HiveQueryResultSet.next(HiveQueryResultSet.java:3

liufang1991的专栏 5946

Doris学习笔记之查询

一个查询任务在单个BE结点上使用的内存默认不超过2GB,如果超过,可能会出现Memory limit exceeded。查看内存限制: 的单位是byte,可通过改变t的值: 该命令只针对当前会话,如需永久有效,则要添加global参数: 修改超时时间 默认最长查询时间为300s,如果超时未完成,则会被取消掉,查看配置: 设置方法同exec_mem_limit。当部署多个FE结点时,用户可以在多个FE之上部署负载均衡层来实现Doris的高可用。自己在应用层代码进行重试和负载均衡。比如发现一个连接挂掉,就自动在

四国棋客 6201

clickhouse集成spring,read timed out

jdbcUrl直接添加socket_timeout=300000 单位ms clickhouse.driverUrl=jdbc:clickhouse://localhost:8123/dwd?socket_timeout=300000

qq_41930811的博客 2960

mysql数据库事务配置_如何配置MySQL数据库超时设置

沙龙活动 | 去哪儿、陌陌、ThoughtWorks在自动化运维中的实践!10.28不见不散!最近备战京东双11,在配置MySQL的超时配置发现有很多地方可以设置。这么多超时的配置有什么影响,以及配置会有什么影响呢?今天的文章就让我来大家来分析一下。1. JDBC超时设置connectTimeout:表示等待和MySQL数据库建立socket链接的超时时间,默认值0,表示不设置超时,单位毫秒,建议...

weixin_29097457的博客 586
上一篇: Tomcat JNDI连接池配置
下一篇: Maven+Nexus进行SCM发布
shift_alt_ctrl
博客等级 码龄10年 0粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值