RHEL的telnet client bug

有时在线上服务器上可以看到log用户使用的telnet进程占用了大量的CPU资源,这两天又遇到这样的事情,所有就查了一下。这个场景可以在CentOS 4.8,5.8上都得到重现。

# ssh 127.0.0.1 “telnet test1.me.net 80”

root@127.0.0.1’s password:

Trying 10.253.85.208…

Connected to test1.me.net (10.23.85.208).

Escape character is ‘^]’.

Killed by signal 2.

这个时候top可以看到telnet经常耗CPU 100%。

后来自己在debian下测试发现没有这个问题,debian下的telnet客户端其实也是 netkit-telnet-0.17。但redhat bugzilla网站也有这样的问题,另外我也试了inetutils(1.6,1.7,1.8, 1.9)里面的telnet客户端也没有发现这样的情况。那么比较明显的是可能是debian对 netkit-telnet打了一些patch,在http://packages.debian.org/squeeze/telnet上可以看到确实有一个patch的,然后我就先把netkit-telnet_0.17.orig.tar.gz 这个包下载下来在centos上编译(很多头文件都没有include,还得自己根据make的报错一个一个添加),编译出来后的telnet确实会出现相同的问题,即占用CPU 100%,strace -p PID后可以看到是进入死循环。把debian的patch打上去后,一下顺利编译,而且占用CPU 100%的情况也消失了,看了下那个patch改动还是很多的。

此条目发表在Admin分类目录。将固定链接加入收藏夹。

发表评论