一次线上http接口调用不通相关的解决过程

本文讨论了一次遇到的线上系统问题,即因HTTP接口调用超时导致页面响应缓慢并最终出现502错误的情况。通过调整HTTP客户端的超时配置解决了问题,并分享了相关代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2016-05-25 08:58:34

昨天线上小白系统因为调用外部http接口,超时不释放,导致页面反应很慢,时间一长,报502错误。

上网查了下,502错误是因为服务对于客户的请求没有得到及时的反应,查询日志,发现很多调http接口异常,页面反应也很慢。

瞬间想到缩短http客户端调用http接口的超时时间,搜到这个博客http://blog.youkuaiyun.com/xinying0424/article/details/36006383  感谢

HttpClient 4:
连接超时:

连接超时
httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,60000);
// 或者
HttpConnectionParams.setConnectionTimeout(params,6000);
读取超时:

httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,60000);
// 或者
HttpConnectionParams.setSoTimeout(params,60000);
HttpClient 3:
连接超时:
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(60000);
读取超时:
httpClient.getHttpConnectionManager().getParams().setSoTimeout(60000);

发现我本来代码里就写了这个,只是时间配置的实在太长

private static MultiThreadedHttpConnectionManager connectionManager = null;
    private static int connectionTimeOut = 2000;t
    private static int socketTimeOut = 10000;
    private static int maxConnectionPerHost = 20;
    private static int maxTotalConnections = 20;
    private static HttpClient client;

    static {
        connectionManager = new MultiThreadedHttpConnectionManager();
        connectionManager.getParams().setConnectionTimeout(connectionTimeOut);
        connectionManager.getParams().setSoTimeout(socketTimeOut);
        connectionManager.getParams().setDefaultMaxConnectionsPerHost(maxConnectionPerHost);
        connectionManager.getParams().setMaxTotalConnections(maxTotalConnections);
        client = new HttpClient(connectionManager);
    }

然后我把socketTimeOut调整为2000,本地想测试下,结果。。。

java.lang.IllegalArgumentException: host parameter is null  调用接口报错

查了下 http://wang371134086.iteye.com/blog/1688458  竟然调用http接口没写http://,加上这段解决

 

问题解决记录下,感谢一下博客。

http://blog.youkuaiyun.com/xinying0424/article/details/36006383
http://wang371134086.iteye.com/blog/1688458

http://blog.sina.com.cn/s/blog_a577563c01013tlz.html

http://jinnianshilongnian.iteye.com/blog/2089792

http://www.zhihu.com/question/21647204

转载于:https://www.cnblogs.com/360buy-gazi/p/5525774.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值