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调度阻塞,影响调度任务的执行的更多相关文章

  1. WebSphere中数据源连接池太小导致的连接超时错误记录

    WebSphere中数据源连接池太小导致的连接超时错误记录. 应用连接超时错误信息: [// ::: CST] webapp E com.ibm.ws.webcontainer.webapp.WebA ...

  2. MySQL的8小时连接超时时间,导致系统过夜即崩溃,报错Could not roll back Hibernate transaction

    2014年3月开始给单位开发<机关规范化管理网络平台>,10月底成功上线运行,但是存在一个bug: 部署环境: apache tomcat 6.0.41 + mysql5.5 + jbpm ...

  3. Socket连接超时(转)

    Socket.connect连接超时有二种情况: 1.由于网络的问题,TCP/IP三次握手时间>timeout的设置时间.这在国外访问weibo时,并且网络环境极差的情况下有可能发生.解决的办法 ...

  4. 转 HttpClient 设置连接超时时间

    要: HttpClient 4.5版本升级后,设置超时时间的API又有新的变化,请大家关注. HttpClient升级到4.5版本后,API有很多变化,HttpClient 4之后,API一直没有太稳 ...

  5. HttpClient设置连接超时时间

    https://www.cnblogs.com/winner-0715/p/7087591.html 使用HttpClient,一般都需要设置连接超时时间和获取数据超时时间.这两个参数很重要,目的是为 ...

  6. QPS过万,redis大量连接超时怎么解决?

    7月2号10点后,刚好某个负责的服务发生大量的redis连接超时的异常(redis.clients.jedis.exceptions.JedisConnectionException),由于本身的数据 ...

  7. 连接SQLServer时,因启用连接池导致孤立事务的原因分析和解决办法

    本文出处:http://www.cnblogs.com/wy123/p/6110349.html 之前遇到过这么一种情况: 连接数据库的部分Session会出现不定时的阻塞,这种阻塞时长时短,有时候持 ...

  8. SSRS报表连接超时的问题

    这段时间遇到一个问题就是ReportService 中采用了远程连接的报表偶尔会断开连接,导致报表导出异常,查阅了很多资料,几天来就是断断续续的终于解决了这个问题,下面把一些解决的点一一展示出来,便于 ...

  9. 关于Oracle连接超时的问题

    测试环境ORACLE 11.2.0. 如果连接池设置单个连接闲置时间大于数据库连接超时时间,则连接池中的连接发出数据请求时会出现Connect timeout occurred错误, 这是由于连接超时 ...

  10. 【有意思的BUG】视频连接超时

    最近遇到了一个BUG,但是它的出现又存在概率,所以挺有意思的. BUG的现象是:视频在播放过程中(已播放进度<已加载进度),首先出现了缓冲的动画效果其次呈现雪花背景并且抛出异常"视频连 ...

随机推荐

  1. 系列解读SMC-R:透明无感提升云上 TCP 应用网络性能(一)| 龙蜥技术

    ​简介:已有的应用若想使用RDMA技术改造成本高,那么有没有一种技术是不做任何改造就可以享受RDMA带来的性能优势? ​ 文/龙蜥社区高性能网络SIG 引言 Shared Memory Communi ...

  2. 阿里集团业务驱动的升级 —— 聊一聊Dubbo 3.0 的演进思路

    简介: 阿里云在 2020年底提出了"三位一体"理念,目标是希望将"自研技术"."开源项目"."商业产品"形成统一的技术 ...

  3. [K8s] Kubernetes核心基础概念 Node, Pod, ReplicaSet, Deployment, Service, Ingress, ConfigMap

    Node 即 Kubernetes 集群中的一台工作机器,物理机或者虚拟机. https://kubernetes.io/zh/docs/concepts/architecture/nodes/ 通常 ...

  4. C语言程序设计-笔记04-函数

    C语言程序设计-笔记04-函数 例5-1  计算圆柱体的体积.输入圆柱的高和半径,求圆柱体积volume=πxr^2xh.要求定义和调用函数cylinder(r,h)计算圆柱体的体积. #includ ...

  5. 还需要学习JDBC吗?如果需要该了解到怎么样的程度?

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 不知道大家在工作中还有没有写过JDBC,我在大三 ...

  6. Asp .Net Core 系列:国际化多语言配置

    目录 概述 术语 本地化器 IStringLocalizer 在服务类中使用本地化 IStringLocalizerFactory IHtmlLocalizer IViewLocalizer 资源文件 ...

  7. ES Monitoring 整理笔记

    Monitoring是elastic stack的监控模块,监控信息存在es索引中,并且可以通过kibana进行可视化的展示.(收集监控数据的方式从6.5版本起由Collectors-Exporter ...

  8. PLC输出指令频率F计算

    本文章为学习记录,水平有限,望各路大佬们轻喷!!!    转载请注明出处!!!

  9. linux 系统tar文件压缩打包命令

    打包成tar.gz格式压缩包 # tar -zcvf renwolesshel.tar.gz /renwolesshel 解压tar.gz格式压缩包 # tar zxvf renwolesshel.t ...

  10. Linux下mv和cp命令的区别

    1.功能上的区别 ​ mv:用户可以使用mv为文件或目录重命名或将文件由一个目录移入另一个目录中. ​ cp: cp的功能是将给出的文件或目录拷贝到另一文件或目录中. 2.inode上的区别(inod ...