为了说明这一点,请假设一位数据库管理员DBA,他一直在使用千兆以太网适配器,在几个节点之间配置集群数据库。事情不太顺利,他自然而然怀疑是硬件出了问题。
所以他把你叫过去,告诉你使用sftp在节点之间移动文件时,传输速率与千兆以太网的传输速率极不匹配。
他自认为测量了网络吞吐量,但是他可能只是测量了远程系统磁盘的读写速率。因此,需要移除限制因素,即磁盘(可能还有sftp的加密开销)。
为了消除磁盘内文件转移对测量的影响,我们将使用netcat。Netcat被称为一个“功能丰富的网络调试和探索工具”。它可以从网上获得,或者已经在你所使用的发行版里了。
whichnc/usr/bin/nc为了测试,我们使用两台主机,一台用于监听连接,另一台用于连接和发送数据流。在每个测试中,我们将使用一个10秒的会话,并且我们将在三个速度不同的lan上进行。为了从测试中消除磁盘读写的消耗,输出文件将是/dev/null。
在主机A(192.168.0.8),以普通用户身份启动netcat:
nc-v-v-l-n-p2222>/dev/nulllisteningon[any]2222..在主机B上,通过端口2222使用yes命令将数据发送到机器A,并使用netcat对会话进行计时。
timeyes|nc-v-v-n192.168.0.82222>/dev/null(UNKNOWN)[192.168.0.8]2222()open在主机A上注意到:
sent87478272,rcvd0real0m9.993suser0m2.075ssys0m0.939s在主机A上,记下发送的数据(以字节为单位):
主机A执行:
nc-v-v-l-p2222>/dev/nulllisteningon[any]2222...主机B执行:
yes|nccfms5-p2222>/dev/nullpunt!主机A显示:
connectto[192.168.1.5]fromcfms6-p[192.168.1.6]33855sent0,rcvd1155325952同上,计算结果是0.9Gb/s。
配置结果如上,省略若干步骤。
...nc-v-v-l-p80>/dev/nulllisteningon[any]80......sent0,rcvd8437760根据时长和接收字节数,计算结果是6.7Mb/s。
我们已经看到了一种使用netcat测试网速的简单方法。
至少可以表明,网速在一定程度上,与它们各自的局域网段速度一致。