tft每日頭條

 > 生活

 > 怎樣準确的測網速

怎樣準确的測網速

生活 更新时间:2024-11-18 11:18:58

引言

有時需要測試網速,但是在開始使用文件傳輸工具來測量之前,請考慮一下,你實際測量的是什麼

為了說明這一點,請假設一位數據庫管理員DBA,他一直在使用千兆以太網适配器,在幾個節點之間配置集群數據庫。事情不太順利,他自然而然懷疑是硬件出了問題。

所以他把你叫過去,告訴你使用sftp在節點之間移動文件時,傳輸速率與千兆以太網的傳輸速率極不匹配。

他自認為測量了網絡吞吐量,但是他可能隻是測量了遠程系統磁盤的讀寫速率。因此,需要移除限制因素,即磁盤(可能還有sftp的加密開銷)。

怎樣準确的測網速(通信老鳥手把手教你)1

Netcat

為了消除磁盤内文件轉移對測量的影響,我們将使用netcat。Netcat被稱為一個“功能豐富的網絡調試和探索工具”。它可以從網上獲得,或者已經在你所使用的發行版裡了。

which nc /usr/bin/nc

為了測試,我們使用兩台主機,一台用于監聽連接,另一台用于連接和發送數據流。在每個測試中,我們将使用一個10秒的會話,并且我們将在三個速度不同的lan上進行。為了從測試中消除磁盤讀寫的消耗,輸出文件将是/dev/null。

百兆帶寬

在主機A(192.168.0.8),以普通用戶身份啟動netcat:

nc -v -v -l -n -p 2222 >/dev/null listening on [any] 2222 ..

在主機B上,通過端口2222使用yes命令将數據發送到機器A,并使用netcat對會話進行計時。

time yes|nc -v -v -n 192.168.0.8 2222 >/dev/null (UNKNOWN) [192.168.0.8] 2222 (?) open

在主機 A上注意到:

connect to [192.168.0.8] from (UNKNOWN) [192.168.0.4] 34111

10秒鐘後,通過鍵入ctl-c停止,并記下所花的時間:

sent 87478272, rcvd 0 real 0m9.993s user 0m2.075s sys 0m0.939s

在主機A上,記下發送的數據(以字節為單位):

sent 0, rcvd 87478392

現在将字節rcvd乘以8得到總位數,然後除以時間:結果是70MB/s。

千兆帶寬

主機A執行:

nc -v -v -l -p 2222 >/dev/null listening on [any] 2222 ...

主機B執行:

yes|nc cfms5-p 2222 >/dev/null punt!

主機A顯示:

connect to [192.168.1.5] from cfms6-p [192.168.1.6] 33855 sent 0, rcvd 1155325952

同上,計算結果是 0.9Gb/s。

最後,慢速的10M帶寬

配置結果如上,省略若幹步驟。

. . . nc -v -v -l -p 80 > /dev/null listening on [any] 80 ... . . . sent 0, rcvd 8437760

根據時長和接收字節數,計算結果是 6.7Mb/s。

寫在最後

我們已經看到了一種使用netcat測試網速的簡單方法。

至少可以表明,網速在一定程度上,與它們各自的局域網段速度一緻。

那我們怎麼解釋,為什麼達不到廣告上标榜的速度呢?也許是主機上的網絡驅動程序的效率不高,再加上處理器開銷,拖慢了整體速度。

我是 @程序員小助手,持續分享編程故事,歡迎關注。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved