百度空间 | 百度首页 
               
 
查看文章
 
域名反向解析的烦恼
2008-11-27 22:15
最近把新开发的登录服务器重构了一下,压力测试过程中发现用户增大之后就卡住。由于并发处理的服务器通常无法单步调试,在地毯式的添加log之后发现竟是一行很不起眼的 java.net.InetAddress.getHostName() 造成。

大批量用户登录 => 调用 getHostName() 阻塞 => 工作线程满 => 后续用户登录超时

简单示意代码如下:

java.net.InetAddress ia = InetAddress.getByName("192.168.100.100");
System.out.println(System.currentTimeMillis());
ia.getHostName(); // 很慢
System.out.println(System.currentTimeMillis());
ia.getHostAddress(); // 很快
System.out.println(System.currentTimeMillis());

从这个问题想到需要对于工作线程的状态需要增加一个监控机制,如果所有的 thread 都是 block 状态就需要引起足够重视。

另外很多网络服务器也有类似域名反向解析的做法,比如 mysql, ssh等。很多程序碰到在登录连接 mysql 时候很慢,在mysql配置去掉域名反向解析后就快了。

补充:最近刚看到 Gea-Suan Lin 也碰到了这个烦恼,见 Smokeping 啟動速度很慢的問題 :)

类别:编程 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu