码迷,mamicode.com
首页 > 其他好文 > 详细

启动脚本中避免目标地址为域名的网络连接

时间:2015-06-14 00:37:01      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:域名解析   脚本   阻塞   linux c   

项目启动脚本想要判断当前网络环境(内网是否连通),于是加了如下脚本代码:

    ping -c1 -W1 xxx.xxx.com > /dev/null
    if [ $? = 0 ]; then

我们的项目启动脚本安装到/etc/init.d/下面了,因此会随服务器重启而启动。于是就出现了下面的情景: 某些服务器启动花了几十分钟时间才启动完成。 这部分服务器在启动的时候网络不通。

解决方法将脚本改成如下:

    ping -c1 -W1 172.xxx.xxx.xx > /dev/null
    if [ $? = 0 ]; then

将脚本中连接测试的目标从域名改成了IP,这个问题就解决了。


原因:

域名解析的过程阻塞的,即请求域名服务器解析目标域名为IP的操作是阻塞的,当服务器无网络,则网络请求阻塞在域名解析的步骤。


以上的问题同样可能会出现在linux c函数gethostbyname(hostname)中,同样,也应该避免进程建立之前(启动完成判断,比如建立pid之前)调用改函数。


启动脚本中避免目标地址为域名的网络连接

标签:域名解析   脚本   阻塞   linux c   

原文地址:http://yunzhongshu.blog.51cto.com/8571602/1661662

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!