今天 SMB 又突然好慢,大概只有 8-9 MB/s,而蘋果 SMB 很容易突然很慢是出了名的。我就想裝 NFS,但是 NFS 弄好之后還是很慢,我服了,我就檢查了scp
等場景,都很慢,但是互聯網下載速度還是很快的。
例如 iperf
的測試結果如下:
怎么說呢,你可以一個慢,說明是服務問題,但是啥都慢,那就很嚇人了。
在這期間我找了很多方法,看了很多帖子,文檔,但都沒有用(一些不錯的我會貼在末尾,雖然對本文沒幫助,但是算是擴展知識面)。
在想不到辦法的時候,我就開始用 Ping 看路由,我懷疑是不是中間經過了什么東西(我甚至沒開交換機用的直連),但是很遺憾,并沒有。并且線也換了幾個,也用了 USB 轉 RJ45 和顯示器上的 RJ45 接口。我甚至用 Windows 試了一遍,發現是正常的。
在經過數個小時的折磨后,突然我在 Ping 傳輸的時候拔掉了網線,然后我發現,IP 端口居然是 Wi-Fi 發,以太網接口收(下面 Src 是 Mac 自帶以太網接口 IP,Dst 是 Ubuntu 的 Wi-Fi 接口 IP):
啊這,終于找到問題所在了。
不過很可惜的是,我在下一步之前沒有使用 netstat -rn
進行檢查。不過事后再次開啟 DHCP 自動分配 IP 之后 netstat -rn
顯示訪問 IP 169.254.2.7
的網絡接口(Netif 是 network interface 的縮寫)是 en1
(這里劇透了):
而 en1
則是 Wi-Fi 的 BSD 設備名稱。
而且 Ping 的這個結果也太不像雙絞線的速度,延遲太高了也,就那么點線,我還換了幾根,換成 15 厘米的都不行(可以看最后的最大/平均/最小值就會發現波動太大了):
這里你可能會說:難道你之前發現很慢,就沒質疑過跑的 Wi-Fi 嗎?
我懷疑了,我也打開路由器管理界面了,但是很遺憾,上面沒有顯示速度。
有可能是網絡接口太多了,也可能是之前調整太多出了 Bug。
定位到癥結所在,那么就是解決問題了。
為什么我當時這么篤定是 IP 問題呢?
因為我三年前做了個 Dell U2723QE 顯示器相關的視頻(估計你可以因此找到我的 B 站賬號哈哈哈),有個評論說顯示器上的網口插上不管用。
我測試的時候發現,macOS DHCP 的速度很慢,然后有可能就不給了,這就導致這個接口沒法用,解決方案就是再開關一下。
果然經驗是要積累的。
這里你可以看到,默認
default
是192.168.1.1
和en1
,所以 src 一開始走 Wi-Fi,畢竟現在的 Mac 大部分都沒有自帶的網口,都是無線網。
默認子網掩碼是 255.255.0.0
,按理來說兩個也碰不到頭,但是它就是碰到了,試試看手動設置 IP 地址和子網掩碼,這里我改成如下內容:
OK 再來試試。
IP 地址和接口沒錯:
iperf
測試速度沒錯(就是千兆網):
SMB 服務器拷貝速度也沒錯:
太完美了,因為改完這個立馬就好了。
我并不清楚這個方法的通用性如何,但是我如果以后再次遇到了相關錯誤,我會來進行補充。
希望能幫到有需要的人~
擴展閱讀
下面是我之前找解決方案的時候看到的幾篇的資料(主要是前兩個)。
Adjust SMB browsing behavior in macOS - Apple Support:這個是蘋果官方培訓資料,里面提到“要加快 SMB 文件瀏覽速度,您可以阻止 macOS 讀取 SMB 共享上的 .DS_Store 文件。這使得 Finder 僅使用基本信息立即按字母數字順序顯示每個文件夾的內容。”
How to disable SMB 1 or NetBIOS in macOS - Apple Support:這個和上者輸出一樣,但是提到了如何關閉 SMB 1(太老了不安全,但是兼容性高):
PowerEdge:如何使用“iperf”測試網絡帶寬 - Dell Technologies:Dell 的一個關于如何使用iperf
的使用說明,因為其他的好多說一堆沒說到點上,這個比較簡潔清晰,方便查詢。并且由于版權,也鏈接了 iperf
的主頁。
FreeBSD 的手冊第 31.2 章 - 網關和路由:這部分介紹了netstat -rn
結果里的Flags
部分的含義。