CloseableHttpClient 连接超时导致XxlJob调度阻塞,影响调度任务的执行
CloseableHttpClient 连接超时导致XxlJob调度阻塞,影响调度任务的执行
问题原因
1.分析日志发现,xxlJob后台界面没有执行时间和执行结果,在某一个时间点之后,某一个任务因为阻塞全部执行失败,影响业务系统未正常进行。比如:定时投保,购买保险等。
2.临时解决:先重启服务,XxlJob恢复调度,可以正常执行任务。
3.优化解决:排查logger日志,发现请求的日志有,返回的日志没有,分析代码发现,CloseableHttpClient未设置超时时间,加上该代码,重新上线。
4.业务数据的拉取,提供给业务方来做线下处理等操作。
5.加上python监控,根据SQL查询业务执行结果,每隔2个小时查询一次,如果没有执行结果,则报警提示。达到监控的目的。
DEMO代码示例:
package com.example.core.mydemo.http.httpclient; import com.alibaba.fastjson.JSON;
import com.example.core.mydemo.http.CancelOrderReqVO;
import com.example.core.mydemo.http.CancelRenyunOrderReqVO;
import com.example.core.mydemo.json2.GsonUtils;
import org.apache.http.HttpEntity;
import org.apache.http.StatusLine;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.http.HttpStatus; import java.io.IOException;
import java.nio.charset.StandardCharsets; public class CloseableHttpTest { public static void main(String[] args) throws Exception {
CancelOrderReqVO data = new CancelOrderReqVO();
data.setOrderNum("111123333");
data.setServerType("1"); //仅仅测试
String url = "http://www.baidu.com"; String jsonParam = GsonUtils.toJson(data);
System.out.println("调用外部接口入参jsonParam:{}" + jsonParam);
String resJson = doPost(url,jsonParam);
System.out.println("调用外部接口返回:{}" + resJson); }
static String doPost(String url, String params) throws Exception {
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);// 创建httpPost
System.out.println("请求url:"+url+",param:" + JSON.toJSONString(params));
httpPost.setHeader("Accept", "application/json;charset=utf-8");
httpPost.setHeader("Content-Type", "application/json;charset=utf-8");
String charSet = "UTF-8";
StringEntity entity = new StringEntity(params, charSet);
httpPost.setEntity(entity);
//设置超时时间【关键】
// 设置连接超时时间(毫秒)
int connectTimeout = 10000;
// 设置读取超时时间(毫秒)
int socketTimeout = 10000;
// 设置从连接池中获取连接的超时时间(毫秒)
int connectionRequestTimeout = 10000;
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(socketTimeout).setConnectTimeout(connectTimeout).setConnectionRequestTimeout(connectionRequestTimeout).build();
httpPost.setConfig(requestConfig); CloseableHttpResponse response = null;
try {
response = httpclient.execute(httpPost);
StatusLine status = response.getStatusLine();
int state = status.getStatusCode();
if (state == HttpStatus.OK.value()) {
HttpEntity responseEntity = response.getEntity();
String jsonString = EntityUtils.toString(responseEntity);
// return new String(jsonString.getBytes(),"UTF-8");
return jsonString;
} else{
//logger.error("请求返回:"+state+"("+url+")");
}
} finally {
if (response != null) {
try {
response.close();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}
CloseableHttpClient 连接超时导致XxlJob调度阻塞,影响调度任务的执行的更多相关文章
- WebSphere中数据源连接池太小导致的连接超时错误记录
WebSphere中数据源连接池太小导致的连接超时错误记录. 应用连接超时错误信息: [// ::: CST] webapp E com.ibm.ws.webcontainer.webapp.WebA ...
- MySQL的8小时连接超时时间,导致系统过夜即崩溃,报错Could not roll back Hibernate transaction
2014年3月开始给单位开发<机关规范化管理网络平台>,10月底成功上线运行,但是存在一个bug: 部署环境: apache tomcat 6.0.41 + mysql5.5 + jbpm ...
- Socket连接超时(转)
Socket.connect连接超时有二种情况: 1.由于网络的问题,TCP/IP三次握手时间>timeout的设置时间.这在国外访问weibo时,并且网络环境极差的情况下有可能发生.解决的办法 ...
- 转 HttpClient 设置连接超时时间
要: HttpClient 4.5版本升级后,设置超时时间的API又有新的变化,请大家关注. HttpClient升级到4.5版本后,API有很多变化,HttpClient 4之后,API一直没有太稳 ...
- HttpClient设置连接超时时间
https://www.cnblogs.com/winner-0715/p/7087591.html 使用HttpClient,一般都需要设置连接超时时间和获取数据超时时间.这两个参数很重要,目的是为 ...
- QPS过万,redis大量连接超时怎么解决?
7月2号10点后,刚好某个负责的服务发生大量的redis连接超时的异常(redis.clients.jedis.exceptions.JedisConnectionException),由于本身的数据 ...
- 连接SQLServer时,因启用连接池导致孤立事务的原因分析和解决办法
本文出处:http://www.cnblogs.com/wy123/p/6110349.html 之前遇到过这么一种情况: 连接数据库的部分Session会出现不定时的阻塞,这种阻塞时长时短,有时候持 ...
- SSRS报表连接超时的问题
这段时间遇到一个问题就是ReportService 中采用了远程连接的报表偶尔会断开连接,导致报表导出异常,查阅了很多资料,几天来就是断断续续的终于解决了这个问题,下面把一些解决的点一一展示出来,便于 ...
- 关于Oracle连接超时的问题
测试环境ORACLE 11.2.0. 如果连接池设置单个连接闲置时间大于数据库连接超时时间,则连接池中的连接发出数据请求时会出现Connect timeout occurred错误, 这是由于连接超时 ...
- 【有意思的BUG】视频连接超时
最近遇到了一个BUG,但是它的出现又存在概率,所以挺有意思的. BUG的现象是:视频在播放过程中(已播放进度<已加载进度),首先出现了缓冲的动画效果其次呈现雪花背景并且抛出异常"视频连 ...
随机推荐
- Flink SQL 性能优化:multiple input 详解
简介: 在 Flink 1.12 中,针对目前 operator chaining 无法覆盖的场景,推出了 multiple input operator 与 source chaining 优化.该 ...
- KubeVela 1.0 :开启可编程式应用平台的未来
简介: 如果你对云原生领域不太关注,可能对 KubeVela 还没有做过太深入的了解.别着急,本文就借着 v1.0 发布之际,为你详细的梳理一次 KubeVela 项目的发展脉络,解读它的核心思想和愿 ...
- 汽车之家基于 Flink 的数据传输平台的设计与实践
简介: 数据接入与传输作为打通数据系统与业务系统的一道桥梁,是数据系统与架构中不可或缺的一个重要部分.数据传输系统稳定性和准确性,直接影响整个数据系统服务的 SLA 和质量.此外如何提升系统的易用性, ...
- Java依赖冲突高效解决之道
简介:由于阿里妈妈联盟团队负责业务的特殊性,系统有庞大的对外依赖,依赖集团六七十个团队服务及N多工具组件,通过此文和大家分享一下我们积累的一些复杂依赖有效治理的经验,除了简单技术技巧的总结外,也会探 ...
- [GPT] 用dogecoin接受付款,如何实现收款回调,不借助中心化的第三方
要在不借助中心化的第三方的情况下实现Dogecoin的收款回调,您可以按照以下步骤进行操作: 1. 设置一个用于接收收款回调的URL:您需要在您的网站或应用程序中设置一个用于接收收款回调的URL. ...
- [FAQ] Cordova 模拟器中不能访问域名, 未联网 ?
首先保证电脑已联网,然后打开模拟器的浏览器输入常用网址,看看是否能够联网. 如果访问失败,在本机中在 cmd 中 ping www.baidu.com 获得百度的ip地址,然后在浏览器中输入 http ...
- dotnet 6 在 System.Text.Json 使用 source generation 源代码生成提升 JSON 序列化性能
这是一个在 dotnet 6 早就引入的功能,此功能的使用方法能简单,提升的效果也很棒.使用的时候需要将 Json 序列化工具类换成 dotnet 运行时自带的 System.Text.Json 进行 ...
- WPF 制作一个占用文件的测试工具
我在开发软件进行测试时,需要测试拖入的文件被占用时软件的行为,于是就做了一个文件占用工具,此工具可以将某个文件进行占用,以及获取某个文件被哪个进程占用 先给大家看一下效果: 以上是拖入文件到灰色部分, ...
- spire.Doc -Index was out of the range
一直以来用的好好的,突然有一天出现:Index was out of the range ED04211_邵武市易逸行软件技术服务有限公司(万顺出行)_其他 升级后问题: 1.合并单元格出现问题 ...
- shell 去掉逗号_shell替换和去掉换行符
用shell处理文件的时候我们常常需要去掉或者加上换行符,name问题就来了怎么才能快速的替换呢? 我们有这样一个文件[root@hxy working]# cat 1 GD200A16C013493 ...