前周接到客户电话,称上次机房搬迁之后,几台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。
阅读(3093) | 评论(0) | 转发(0) |