这段时间遇到两次ssh登陆缓慢的问题,花了点时间找找原因,各不相同。

dns故障

三台服务器,RH2285-3、RH2285-4和DL165-1,RH2285-4 ssh登录DL165-1很快,RH2285-3 ssh登录DL165-1很慢,需要找到原因。

尝试了关闭UseDNS no,未果,结果在RH2285-3中,ssh -vvv dl165-1发现:

debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information

google后,有网友建议在/etc/ssh/sshd_config中添加以下配置:

GSSAPIAuthentication no

经测试,有一定的改善,但是还是比不上RH2285-4快,偶然发现在RH2285-3中ping dl165-1和rh2285-4都很慢,但是ping ip就很快,应该是dns的问题

$ sudo cat /etc/resolv.conf发现
nameserver 172.16.33.253
nameserver 172.16.33.252

而RH2285-4的/etc/resolv.conf

nameserver 172.16.33.254

联想到openbsd2已经宕机,253已经没有响应,当然是254(252的vip)更快,把RH2285-3的resolv.conf改过来,问题解决!

参考:

下面这个连接

给出如何对一个publickey的ssh进行计时:

[davidp@columbia:~]$ time ssh 10.1.1.192 touch /dev/null | grep real
real  0m15.512s
After adding it:
[davidp@columbia:~]$ time ssh 10.1.1.192 touch /dev/null | grep real
real  0m0.611s
Problem solved.

tcp incorrect checksum

master有4块网卡,eth0和eth1做了bond0,并且使用了linux kernel自带的bridge,eth2和eth3使用ovs做了bond1和bridge。其中10.10.0.50位于br300<→bond0.300,192.168.111.1位于vlan111,一个隶属于ovsbr1的internal port,并且tag=111。

从u1404-64-mgmt-2 ssh到10.10.0.50,速度正常。然而ssh到192.168.111.1,速度极其缓慢。开始的时候,使用ping,没有发现掉包现象,延时也很正常,使用paping也没有问题,非常奇怪。

最后只能出tcpdump这个大招了。使用ssh -vvv root@192.168.111.1,显示正常,没有错误的迹象,然而在u1404-64-mgmt-2中使用tcpdump -nvi eth1 port 22 and host 192.168.111.1,发现很多incorrect checksum。

提醒,将eth2和eth3的rx和tx都关闭。

$ sudo ethtool -K eth2 rx off tx off
$ sudo ethtool -K eth3 rx off tx off

vola!ssh的访问速度恢复正常。

该解决办法由于禁止了nic的checksum offload功能,会导致cpu的负载增加,最终还是需要从broadcom的驱动入手来解决此问题。实际上incorrect checksum是正常的,原因如下:

为了永久生效,需要写到ifcfg-ethX中

$ sudo vim /etc/sysconfig/network-scripts/ifcfg-ethX
-----------8<-------------
ETHTOOL_OPTS='--offload ethX rx off tx off'
----------->8-------------