llxyzlll
作者llxyzlll·2011-06-20 15:52
其它·某银行

【转】 解决:AIX FTP 传输速度慢

字数 2826阅读 10590评论 0赞 1

前周接到客户电话,称上次机房搬迁之后,几台AIX小型机(P630)在使用FTP的时候特别慢,只有几百K每秒,而搬迁前常常能达到几兆每秒,速度下降很快,要求找出故障原因并解决之。

没去客户现场前,在网上搜罗了一下这方面的文章,发现大多跟一个名为"tcp_nodelayack”的内核参数相关,这个参数在IBM官方文档中解释是:

打开该参数将导致TCP将立即确认(ack)信息包发送给发送者,当tcp_nodelayack值关闭时,TCP显示以最大200ms发送ack包,这允许ack的背负式响应并且最小化系统开销。可以使用该选项来克服 TCP nagle 算法的其它实现中的错误。将该选项设置为 1 将导致稍多一点的私通开销,但如果发送者正在等候接受者的确认,则可能导致网络传输的更高性能。

在默认情况下,这个值为0,可以通过使用命令"no”来将这个参数调整为"1”。具体命令为"no -p -o tcp_nodelayack=1。参数"-p"的含义是永久性修改这个参数,即使重启这个值也不会发生变化,如果没有-p参数,那么重启之后系统自动恢复到默认值0。

仔细查看了几个不同版本的AIX系统,包括AIX 4.3.3,AIX 5.1,AIX 5.2,发现这个命令在各个系统上的用法不尽相同。首先,在AIX 4.3.3中,并没有tcp_nodelayack这个参数;在AIX 5.1中,有这个参数,但no命令中并不包含-p参数,也就是说不能实现用命令来永久性修改内核参数,而只能通过使用vi编辑器来修改/etc/rc.tcpip来实现;在AIX 5.2中,有这个参数,而且"man no"之后显示也有-p这个参数,意即可以通过命令来实现永久性修改内核参数重启值不变。

带着所收集到的这些信息到达客户现场,首先测试了一台P630的FTP速度,发现仅为176.66Kbytes/sec,而在另一台不存在FTP速度方面问题的F85上测试,速度为1254Kbytes/sec,说明用户所述情况属实。在排除了网线、应用等可能引起的故障之外,最终还是决定对内核参数tcp_nodelayack进行在线调整,操作步骤如下:

1,查看系统内核参数tcp_nodelayack值(# no -a |grep tcp_nodelayack_,果然为0;

2,查看操作系统版本为AIX 5.2;

3,"# man no"查看no命令带有-p参数;

4,"# no -p -o tcp_nodelayack=1",对内核参数进行修改;

5,"# no -a |grep tcp_nodelayack"进行查看,tcp_nodelayack的值为1;

内核参数修改完毕,再使用FTP工具测试速度,这次为203.88Kbytes/sec,速度提高并不明显,说明故障点与内核参数关联不大,于是将tcp_nodelayack的值重新调整为0。

排除速度慢与内核参数tcp_nodelayack无关之后,进入到下一步的troubleshooting。

经比较,一台P630与一台F85在操作系统版本类型一致,负荷基本也一致的情况下出现使用FTP速度偏差很大的情况,前者仅为176.66Kbytes/sec,后者为1254Kbytes/sec,这让人将思考角度扩散到网卡以及其对应的交换机接口属性上。

通过"smitty"查看F85主网卡属性为"auto-negotiation",意即自动协商,其对应的CISCO 3550交换机Fa0/17接口属性也为"auto-negotiation";而P630主网卡属性也为"auto-negotiation",其对应交换机接口属性为100M full duplex,意即100M全双工。初步判定造成P630FTP速度过慢是由于网卡以及其所连交换机对应接口的属性不一致所致。

因为P630为生产机,不能随意更改,所以决定对测试机F85进行以及其对应交换机接口进行更改测试。远程连接CISCO 3550,在特权模式中将FA 0/17口属性由原来的自动协商更改为100M全双工状态:

# show running-config

# show interface fa 0/17

# configure terminal

# interface fa0/17

# speed 100 duplex full

在F85这端,一直进行ping测试,在其所对应交换机接口协议状态发生变化后,网络有三秒钟延迟,然后归于正常。Fa0/17修改完毕之后,对于F85来说,网卡协议设置与其对应交换机接口设置也出现不一致,这时通过FTP对其速度进行测试。经测,速度仅为90.2Kbyte/sec,说明网络慢的确跟主机与交换机协议不一致相关,问题找到。

在确定网络速度慢的故障之后,我们定于在生产机不太繁忙的时候对主机主、备网卡(都为auto-negotiation)进行修改。选择对主机网卡属性进行修改以匹配交换机接口属性而不是对交换机接口属性进行修改来匹配主机网卡属性的原因是改为100M全双工速度比较稳定,而自适应状态一般是不推荐的。

生产机是做的双机,意味着有两台P630,一主一备,应用即浮动IP地址处于主机的主网卡上面,如果主机出了故障比如宕机,那么应用自动切换到备机的主网卡上。

主机的主、备网卡属性都为"auto-negotiation",需要都改为100M全双工状态,修改过程如下:

1,通过主机的主网卡地址远程telnet到AIX 5.2;

2,ifconfig -a确认浮动IP地址绑定在主网卡上面;

3,ifconfig en2 down停掉备用网卡;

4,smitty chinet对en2进行修改,将"up“状态更改为"detach”,这时才能对网卡属性进行修改;

5,smitty将en2自适应状态更改为100M全双工状态;

6,smitty chinet对en2进行修改,将"detach"状态更改为"up“;

7,通过FTP连接到备用网卡,测试速度,高达7M/S,说明修改成功;

8,通过主机的备用网卡地址地址远程telnet到AIX 5.2;

9,拔掉主网卡连接网线,等待应用切换到备用网卡上面(这里网络有十五秒钟中断);

10,对主网卡属性按照3-6相同的步骤进行修改,将主网卡属性也改为100M全双工状态;

11,通过FTP连接到主网卡,测试速度,同样高达6M/S,说明主网卡属性修改成功。

至此,故障完全排除。



以下是自己的体会:

如上文所说,导致我问题主要是因为Media Speed的类型不匹配,我是在AIX6.1 TL3下发现的同样的问题,我的解决方法是将其改为:Auto_Negotiation。这样问题就解决了

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广