之前总是发现 httpclient 有假死的问题,各种超时时间都设置了,都不能解决,最近跟踪了下,发现是 dns 解析地方的超时导致,在 InetAddress.getByName 卡住

虽然Socket类有setTimeout()方法,URLConnection有setConnectTimeout()方法,但这都不能给DNS查询过程添加时间限制,也就是说,如果DNS服务器挂了,那么代码就会阻塞几十秒才能抛出异常。我最近就遇到了这个问题,当DNS服务器出问题的时候,setTimeout()设置的超时时间就不起作用了。

经过google,发现Java目前居然还没有现成的API来处理DNS查询超时的问题。不过一个老外的博客上给出了一种曲线救国的方法:

public class DNSLookupThread extends Thread {

private InetAddress addr;

private String hostname;

public DNSLookupThread(String hostname) {

this.hostname = hostname;

}

public void run() {

try {

InetAddress add = InetAddress.getByName(hostname);

set(add);

} catch (UnknownHostException e) {

}

}

private synchronized void set(InetAddress addr) {

this.addr = addr;

}

public synchronized String getIP() {

if (null != this.addr) {

return addr.getHostAddress();

}

return null;

}

}

见 http://blog.csdn.net/neosmith/article/details/43235335

httpclient 假死问题相关推荐

  1. Java线上问题排障:Linux内核bug引发JVM死锁导致线程假死

    Java本质上还是离不开操作系统,一来Java源码是用C/C++实现的,二来java进程还是需要依附于操作系统和硬件资源,有时候一些问题是操作系统级别导致的,下面的整个事件是源自一则真实的线上案例. ...

  2. tomcat经常挂掉MySQL_tomcat 挂掉,假死无响应原因总结和解决方案

    tomcat假死原因 以前遇到tomcat莫名奇妙的假死了,没有任何的响应,然后重启后又可以了,隔段时间又假死了.以前不懂的处理和排除原因,纠结的半死.无从入手,都想砸电脑,小伙伴们有遇到过,我遇到过 ...

  3. SrpingCloud服务假死分析 参数优化

    背景 生产环境SpringCloud集群下,业务服务频繁卡顿.假死.心跳超时,触发自动重启机制. 版本 Eureka Server SpringCloud Hoxton.SR10 SpringBoot ...

  4. mfc 如何判断excel软件是否打开_教你windows如何关闭假死窗口,了解自己使用的电脑。...

    在我们使用电脑的时候会经常出现电脑卡机啊不好用啊等等情况,可是自己却不知道电脑为什么会那么慢,如何让电脑快些呢?先来介绍下电脑快慢是怎么回事.在电脑硬件都正常的情况下如果电脑慢会有以下几种情况: 1. ...

  5. 千万别在UI线程上调用Control.Invoke和Control.BeginInvoke,因为这些是依然阻塞UI线程的,造成界面的假死...

    .c# Invoke和BeginInvoke 区别 Control.Invoke 方法 (Delegate):在拥有此控件的基础窗口句柄的线程上执行指定的委托. Control.BeginInvoke ...

  6. C# Application.DoEvents() 处理队列消息,防界面假死。

    该方法可以处理当前队列的消息,比如一个for循环 5000次 向TextBox中追加文本,那肯定会假死一会儿的. 此时便可使用Application.DoEvents()来处理队列的信息. 简单说下使 ...

  7. 启动一个java项目http状态 500 - 内部服务器错误_Java web服务器假死分析

    问题现象: 服务端端口开着,客户端可以telnet 服务器上的端口,但访问服务时没有任何返回. 服务器环境 :Java 8 + linux CentOS release 6.5. 用apache ab ...

  8. 一种在网络层清理机器假死时TCP连接的方案介绍

    一.背景 假如应用服务器A上有若干模块连接某数据库服务机器B,当B异常假死,需要将B的请求切换到备份系统,这样已经建立的连接就遗留了下来.如果A上hang住的连接占用的服务线程较多,就可能造成业务系统 ...

  9. java启动子线程过多导致卡死_java线程基础巩固---多Product多Consumer之间的通讯导致出现程序假死的原因分析...

    在上一次中已经实现一个生产者与消费者的初步模型(http://www.cnblogs.com/webor2006/p/8413286.html),但是当时只是一个生产者对应一个消费者,先贴下代码: p ...

  10. 转:优化js脚本设计,防止浏览器假死

    原链接打不开了,复制一份保存: 在Web开发的时候经常会遇到浏览器不响应事件进入假死状态,甚至弹出"脚本运行时间过长"的提示框,如果出现这种情况说明你的脚本已经失控了,必须进行优化 ...

最新文章

  1. 心得体悟帖---回避型人格
  2. Android-静态代理模式
  3. SVN中 “containing working copy admin area is missin
  4. 计算机硬件市场调查实验报告,计算机组装与维护实训报告范例.doc
  5. linux常用命令(用户篇)
  6. 学计算机的如何学英语,怎么在电脑上学习英语
  7. php数组在golang,go语言数据类型-数组(array)
  8. mysql性能优化的最佳20条经验_MySQL性能优化的最佳20+条经验
  9. java writedouble_java-将double转换为32位表示形式(以及相反的...
  10. Luogu P2595 [ZJOI2009]多米诺骨牌 容斥,枚举,插头dp,轮廓线dp
  11. linux:云端 ubuntu下挂载数据盘
  12. 更新ati显卡bios
  13. 回溯算法-八皇后问题
  14. oracle count 1 count 区别,Count(1)和count(*)区别
  15. microchip-02之MCC工具安装
  16. ASP.NET+Sql Server 2008 +highchart控件从数据库中获取数据生成饼状图柱状图
  17. 分糖果系列一(DP+暴力)
  18. dojo和ArcGIS
  19. Matlab实现蒙特卡罗方法(随机模拟法)
  20. 中国移动:4G流量不清零,可分享

热门文章

  1. 树莓派4B安装WPS步骤及缺失字体问题
  2. java wps linux 安装_安装wps for linux无法启动
  3. dos命令中DATE:~0,10输出日期格式名称格式/改为-
  4. Premiere 常用视频概念
  5. 2020-12-29 G003-186-16
  6. Linux命令注销电脑,Linux基本命令-注销、关机、重启
  7. linux 实验感悟_linux实验心得
  8. 微信推送封面尺寸_微信公众号封面图、正文配图尺寸如何?如何选择、制作?...
  9. mysql查询各科成绩前三名_No.03 数据库经典面试之如何取出每科成绩的前三名
  10. Joint Discriminative and Generative Learning for Person Re-identification论文翻译