linux DNS 配置错误导致ssh登录慢的原因分析
来源:互联网 发布:淘宝网登陆页 编辑:程序博客网 时间:2024/04/30 10:34
引自 http://www.cnblogs.com/bangerlee/articles/2460619.html
引言
操作系统中/etc/resolv.conf配置文件中的内容一般为空,如果该文件配置不正确,将导致ssh、route、netstat命令响应慢的问题。
在/etc/resolv.conf添加错误地内容,导致涉及域名解析相关的命令响应慢,是维护工作中较常遇到的问题。
相关案例
现象:使用其他机器ssh连接一机器,响应很慢,需要10多秒时间才有输入密码的提示响应。
问题解决:
被连接机器的/etc/resolv.conf文件中包含了以下内容:
XXXXX:~ # cat /etc/resolv.confnameserver 202.102.152.3search XXX
由于配置了/etc/resolv.conf文件,该机器成为DNS Client,而DNS Server为202.102.152.3这个ip对应的机器。
执行ssh时,该主机会根据以上配置进行域名解析,由于202.102.152.3这台机器ip不可达,主机将尝试多次域名解析,直到达到超时次数。
route/netstat命令输出慢
执行route和netstat命令时,也会进行域名解析,像以上那样错误地配置/etc/resolv.conf文件,也会导致route、netstat命令输出缓慢。
而执行route –n和netstat –n时则不会有缓慢的问题,因为加了-n选项,命令执行时将输出XXX.XXX.XXX.XXX点分十进制的ip地址,不进行域名解析。
strace跟踪分析
在《自助Linux之问题诊断工具strace》一文中,介绍了strace的用法,像这类命令执行相应慢或执行出错的问题,使用strace进行问题分析再适合不过了。
下面我们将大脑清空,“忘记”上文内容,来学习如何使用strace来分析ssh登陆慢的问题。
首先,我们在使用ssh的机器上使用strace跟一下ssh命令:
linux198 /root# strace -o ssh.strace -fT ssh 10.71.171.140
可以看到输出文件ssh.strace中,ssh命令在底层的一个select调用阻塞了15s:
……23452 write(3, "\325/S\265\223\246H\241nG\237\4,\2201\23\235]<\5] 7ke\200"..., 912) = 912 <0.000010>23452 select(4, [3], NULL, NULL, NULL) = 1 (in [3]) <15.098772>……
尽管select系统调用本身是非阻塞的,ssh仍等待select的返回再往下执行。除此之外没有获得其他有用信息。
这时我们再在被ssh登陆慢的、有问题的机器,跟一下sshd进程,先查找sshd进程的pid:
slot10-sles10sp2:~ # ps aux | grep sshd | grep -v greproot 5352 0.0 0.0 26068 1432 ? Ss 12:27 0:00 /usr/sbin/sshd -o PidFile=/var/run/sshd.init.pidroot 7761 0.0 0.0 40792 2912 ? Ss 14:55 0:00 sshd: root@pts/0
再使用-p选项对运行中的进程使用strace跟踪:
slot10-sles10sp2:~ # strace -o sshd.strace -fT -p 5352Process 5352 attached - interrupt to quit
以上命令执行时会挂住,等待ssh连接的到来。这时我们在另一台机器上使用ssh 10.71.171.140命令连接该机器。
使用ssh成功登陆之后,ctrl+c将strace命令停止,我们可以看到sshd.strace文件中有以下输出:
16894 open("/etc/resolv.conf", O_RDONLY) = 4 <0.000026>16894 fstat(4, {st_mode=S_IFREG|0644, st_size=40, ...}) = 0 <0.000023>16894 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b0eb8dbf000 <0.000024>16894 read(4, "nameserver 202.102.152.3\nsearch "..., 4096) = 40 <0.000028>16894 read(4, "", 4096) = 0 <0.000023>16894 close(4) = 0 <0.000024>16894 munmap(0x2b0eb8dbf000, 4096) = 0 <0.000026>16894 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 4 <0.000027>16894 connect(4, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("202.102.152.3")}, 28) = 0 <0.000025>16894 fcntl(4, F_GETFL) = 0x2 (flags O_RDWR) <0.000024>16894 fcntl(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0 <0.000023>16894 poll([{fd=4, events=POLLOUT, revents=POLLOUT}], 1, 0) = 1 <0.000024>16894 sendto(4, "\313\367\1\0\0\1\0\0\0\0\0\0\003198\003172\00271\00210"..., 44, 0, NULL, 0) = 44 <0.000117>16894 poll([{fd=4, events=POLLIN}], 1, 5000) = 0 <5.000046>16894 poll([{fd=4, events=POLLOUT, revents=POLLOUT}], 1, 0) = 1 <0.000024>16894 sendto(4, "\313\367\1\0\0\1\0\0\0\0\0\0\003198\003172\00271\00210"..., 44, 0, NULL, 0) = 44 <0.000035>16894 poll([{fd=4, events=POLLIN}], 1, 5000) = 0 <4.999760>16894 close(4) = 0 <0.000028>
从以上输出可以看到,当有连接到来的时候,sshd进程会打开并读取/etc/resolv.conf文件的内容,对其中的DNS nameserver建立socket,然后调用poll函数,每个poll调用5s后超时返回。
进一步地,我们了解/etc/resolv.conf文件的作用,查看/etc/resolv.conf文件的配置,从而解决问题。
小结
本文讨论了/etc/resolv.conf文件配置错误,导致ssh登陆慢(包括从其他机器跳转慢、使用putty等软件登陆慢)、reoute/netstat命令执行慢的问题。
通过问题的复现,使用strace进行问题分析,我们也小试了一下牛刀,熟悉了strace的使用方法。
- linux DNS 配置错误导致ssh登录慢的原因分析
- ssh登录慢的原因
- ssh登录linux服务器很慢的原因
- 客户端连接LINUX很慢原因可能是使用DNS导致的
- ssh无密码登录配置错误原因
- Linux SSH远程登录慢的解决方法
- linux 下DNS配置错误分析
- Linux:openSUSE DNS 配置错误导致无法上网
- Linux网络配置 DNS配置信息丢失 可能原因分析
- ssh 登陆慢的原因
- ubuntu的ssh登录慢
- 解决:linux 配置了dns 后,使用securecrt 登录linux速度超级慢
- Linux下ssh登录速度慢的解决办法
- Linux下ssh登录速度慢的解决办法
- Linux下ssh登录速度慢的解决办法
- Linux下ssh登录速度慢的解决办法
- SSH 远程登录Linux服务器很慢的解决方案
- Linux使用ssh远程登录服务器反应慢的解决办法
- java学习记录(一)类和异常
- 完全用nosql轻松打造千万级数据量的微博系统
- 解决 “python [Errno 13] Permission denied”
- Android非常有用的开源库介绍整理
- Inorder Successor in Binary Search Tree BST中找中序遍历的后继节点
- linux DNS 配置错误导致ssh登录慢的原因分析
- 关于结构体的说道
- 《经典食人花》windows经典桌面游戏食人花(吃花)登陆iOS,Android啦
- Java中的泛型方法
- POJ 4070 积水量问题
- fedora20 Starting MySQL. ERROR! The server quit without updating PID file /var/lib/mysql/Master.Hado
- 心情很不爽
- trace详解
- 菜鸟程序员开通的第一个博客