首页 > 其他 > 详细

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

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

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

    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之前)调用改函数。


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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!