Windows 哪個程式在佔網路?查看頻寬與流量使用的方法
想知道 Windows 上此刻是哪個程式在佔網路,先按 Ctrl + Shift + Esc 開啟工作管理員,停在「處理程序」頁按「網路」欄排序,再開啟資源監視器(resmon)看每個處理程序的傳送和接收速率,這兩個工具回答的是「現在誰在用頻寬」,跟「這個月誰用掉了流量」和「這個程式在跟誰通訊」是三個不同的問題。
把這三個問題分開,能省掉很多瞎猜,視訊通話卡頓要看即時資料,手機熱點流量用光了要看歷史紀錄,一個不認識的程式則要看它的連線和它的檔案位置。
現在誰在用頻寬
工作管理員是最快的起點,微軟對「處理程序」頁的描述是一份應用程式和背景處理程序的清單,附帶每一項的資源使用量,如果只看到一個小視窗,點「其他詳細資料」展開。點一下「網路」欄的標題,讓最忙的處理程序排到最上面,然後盯半分鐘,開網頁時冒一下尖峰說明不了什麼,你什麼都沒做它卻一直排在第一的那個處理程序,才是要追下去的。
這一欄其實沒有看上去那麼準,原因有兩個,它顯示的是速率不是總量,一小時前下載了 5 GB 的程式現在讀數是零,而且電腦上有好幾張網路卡時(Wi-Fi 加 VPN,或者 Hyper-V、WSL 的虛擬交換器),這個數字未必對得上實體連線上實際跑的流量,數字看著不對勁,就換資源監視器看更細的檢視。
在開始功能表或「執行」方塊裡輸入 resmon 就能開啟:
resmon
在「網路」索引標籤裡,第一張表「具有網路活動的處理程序」列出最近傳送或接收過資料的每一個處理程序,帶有傳送、接收和總計速率,單位是位元組每秒,按總計排序即可。微軟的資源監視器指南講到了它真正好用的地方,勾選某個處理程序旁邊的核取方塊,下面的「網路活動」「TCP 連線」「接聽連接埠」幾張表就只剩這個處理程序的內容。
兩個工具都有同一個坑,好幾個 Windows 服務共用一個 svchost.exe 處理程序,一個很忙的 svchost.exe 只能告訴你流量來自某個服務,說不出是哪一個,資源監視器的「CPU」索引標籤裡有一張「服務」表,能看到選取的 svchost.exe 裡託管了哪些服務。
一段時間裡誰用了流量
即時檢視在傳輸結束後什麼都不記得,要看歷史,Windows 在 設定 › 網路和網際網路 › 進階網路設定 › 資料使用量 裡按連線保存了累計總量,微軟的計量付費連線一文在需要移除數據限制時也是讓你來這個頁面。在頂部選好網路卡(Wi-Fi 或乙太網路),頁面會顯示這個連線用了多少流量,下面列著用過它的應用程式。
同一個頁面還能給這個連線設數據限制,2023 年的一次 Windows 設定更新加上了每日和每週的限制,並會顯示超出限制多少。限制本身不會擋下任何東西,快到上限時 Windows 會提醒你,在 Wi-Fi 上它還會把「計量付費連線」開關鎖在開啟狀態,這一點在後面一節會用到。
清單裡出現一個很大的「系統」或 Windows 項目很正常,更新、傳遞最佳化和其他內建元件都歸在這一項下面,所以「系統」下的數字很大,指向的是 Windows Update 和傳遞最佳化,不能當成有東西藏在裡面的證據。
誰在連到哪裡
問題變成「這個程式在跟誰通訊」時,就別看速率了,改看連線。在資源監視器裡展開「TCP 連線」,看你勾選的那個處理程序的「遠端位址」和「遠端連接埠」兩欄,命令提示字元裡用 netstat 也能拿到同樣的清單:
netstat -ano
netstat 參考文件解釋了這些參數,-a 顯示所有連線和接聽連接埠,-n 讓位址保持數字形式、不去解析名稱,-o 加上處理程序識別碼(PID)。再加 -b 能顯示每個連線對應的執行檔,但不以系統管理員身分執行命令提示字元就會失敗。
要把 PID 換成程式名稱,用帶篩選條件的 tasklist,把 4120 換成 netstat 裡看到的 PID:
tasklist /fi "PID eq 4120" /svc
/svc 參數會列出這個處理程序裡的服務,靠它才分得清一個 svchost.exe 和另一個。在 PowerShell 裡,Get-NetTCPConnection 傳回的是物件,一行就能篩選並對上處理程序名稱:
Get-NetTCPConnection -State Established |
Select-Object LocalPort, RemoteAddress, RemotePort, OwningProcess,
@{n='Process'; e={(Get-Process -Id $_.OwningProcess).ProcessName}} |
Sort-Object Process
大多數應用程式連的都是雲端主機,主機名稱跟應用程式本身看不出關係,所以連線清單用來確認哪個處理程序在活動,別拿它判斷目的地是好是壞。
常見的正常來源
大部分意料之外的流量,都是軟體在做它本來就該做的事,下面這些最值得先查。
| 來源 | 在哪裡看到 | 在哪裡限速 |
|---|---|---|
| Windows Update 和傳遞最佳化 | 託管傳遞最佳化的 svchost.exe,資料使用量裡的「系統」 |
設定 › Windows Update › 進階選項 › 傳遞最佳化 |
| OneDrive 同步 | OneDrive.exe |
OneDrive 設定 › 同步與備份 › 進階設定 |
| Microsoft Store 應用程式更新 | Microsoft Store、svchost.exe |
計量付費連線會暫停 Store 下載 |
| 雲端備份應用程式 | 備份應用程式自己的處理程序 | 應用程式裡的頻寬或排程設定 |
| 遊戲啟動器 | Steam、Epic、Battle.net 之類 | 啟動器的下載限速和更新排程 |
| 瀏覽器 | 好幾個 msedge.exe 或 chrome.exe 處理程序 |
關掉對應分頁或擴充功能,也可以看瀏覽器內建的工作管理員 |
傳遞最佳化值得多看一眼,因為它還會上傳。微軟的隱私權說明頁寫到,根據你的設定,電腦可能會把更新和應用程式的片段傳給區域網路或網際網路上的其他電腦,但從不傳送個人內容。在 設定 › Windows Update › 進階選項 › 傳遞最佳化 裡,把「允許從其他裝置下載」設成「我的區域網路上的裝置」,或者直接關掉,兩種情況下都照樣能從微軟拿到更新。傳遞最佳化一文講了「進階選項」頁面的內容,背景和前景下載可以按絕對值或百分比限速,上傳頻寬可以設上限,還有一個 1 到 500 GB 之間的每月上傳限制。這些限制只管自動更新的下載,你自己發起的下載不受影響,頁面裡的「活動監視器」按來源顯示本月的下載量和你的上傳總量,「我的電腦是不是一直在給別人傳更新」這個問題在這裡能直接得到答案。
OneDrive 方面,微軟的上傳和下載速率一文說明可以設一個 50 到 100,000 KB/秒之間的固定上限,上傳還能選「自動調整」。如果只是想空出一小時的頻寬,從 OneDrive 圖示裡選「暫停同步處理」更省事,時間到了會自己恢復。OneDrive 要是同時還在佔滿硬碟,OneDrive 儲存空間指南講了「檔案隨選」。
關掉視窗後還一直有流量的瀏覽器,通常是還在背景執行,為什麼 Edge 一直在背景執行一文講了這項設定怎麼改。
用計量付費連線壓住背景下載
用的是熱點或有流量上限的方案時,把連線設成計量付費,是 Windows 提供的涵蓋面最廣的開關。開啟 設定 › 網路和網際網路 › Wi-Fi,選取目前連著的網路,開啟「計量付費連線」(乙太網路的同一開關在 網路和網際網路 › 乙太網路 下)。據微軟的說明,開啟後 Windows Update 只下載優先更新,Microsoft Store 的下載可能會暫停,離線檔案可能不再自動同步,在計量付費連線上,傳遞最佳化也不再向網際網路上的電腦上傳。
代價是你需要的更新也會跟著等,回到不限流量的網路後記得把開關關掉。如果開關是灰的、關不掉,原因通常是設了數據限制,到 進階網路設定 › 資料使用量 裡移除它,還是鎖著的話,就是你所在的組織在管理這項設定。
用防火牆擋應用程式,要小心
Windows 防火牆可以讓一個應用程式無法通訊,但拿它來解決頻寬問題是錯的第一步,擋住更新程式就擋住了它的更新,安全性修正也在其中,擋住同步應用程式則可能讓檔案只傳了一半,優先用應用程式自己的頻寬或暫停設定。
確實需要移除某個應用程式的權限時,開啟 Windows 安全性 › 防火牆與網路保護 › 允許應用程式通過防火牆,點「變更設定」,取消該應用程式旁邊的核取方塊,再點「確定」。微軟的防火牆說明要求只在確有需要時才放行應用程式,也絕不要放行不認識的應用程式。把改過的地方記下來,等這個應用程式出現意料之外的故障時,可以再勾回去。
什麼時候該起疑
一個很忙的處理程序通常沒什麼問題,值得細看的是這幾種,沒有發行者,名稱模仿系統檔案只差一兩個字母,或者所在位置對不上。在工作管理員裡右鍵這個處理程序,選「開啟檔案位置」,系統檔案在 C:\Windows\System32 裡是正常的,同名檔案從 AppData\Local\Temp 或下載資料夾裡跑起來就不正常了,電腦閒著時一個你從沒裝過的程式還在持續上傳,這種情況要認真對待。
這時開啟 Windows 安全性 › 病毒與威脅防護,跑一次快速掃描,還不放心就選 掃描選項 › Microsoft Defender 離線版掃描,微軟提到它會重新啟動電腦,在 Windows 載入之前掃描,所以先儲存好手邊的工作,結果會出現在「保護歷程記錄」裡。排查過程中別把不認識的處理程序一個個都結束掉,其中很多屬於 Windows 本身,CPU 使用率指南講了結束處理程序之前怎麼先追查它。
Mole 能幫上什麼
Mole 的「狀態」頁把網路活動和 CPU、記憶體、磁碟放在一起,「網路」卡片上顯示目前下載速率,下面是上傳速率,還有兩者的一小段歷史,以及你連的是 Wi-Fi、乙太網路還是 VPN。這些計數來自實體網路卡,所以顯示的是整台電腦的總流量,Mole 不按處理程序拆分網路流量,它的處理程序清單按名稱、PID、CPU 或記憶體排序,不按網路排序。
處理程序清單真正幫得上的是下一步,按應用程式名稱、處理程序名稱或 PID 搜尋(比如從 netstat -ano 裡複製來的 PID),就能看到某個處理程序屬於哪個應用程式,點開處理程序還能查它的父處理程序、服務、啟動來源和接聽連接埠。至於每個應用程式各用了多少頻寬,還是要靠工作管理員和資源監視器,說明裡的「狀態」一節對這個頁面有更詳細的介紹。
常見問題
網路明明很忙,為什麼工作管理員裡每個應用程式都顯示 0 Mbps?
「網路」欄是即時速率,有 VPN 或虛擬交換器時,它反映的可能是另一張網路卡,而不是實際承載流量的那張,去看資源監視器的「網路」索引標籤,那裡列出了最近有傳送和接收活動的每一個處理程序。
資料使用量裡只寫著「系統」,到底是什麼在用流量?
「系統」把 Windows Update、傳遞最佳化這類 Windows 元件歸到了一起,開啟傳遞最佳化的「活動監視器」看本月的下載和上傳,如果上傳量很大,就限制或關閉與其他裝置共用。
Windows 能給單一應用程式限制流量嗎?
設定裡的數據限制作用於整個連線,單一應用程式要用它自己的頻寬設定,OneDrive 和大多數遊戲啟動器都有,或者在你需要網路時先把它暫停。
把連線設成計量付費,會停掉所有背景流量嗎?
不會,它會減少 Windows Update、Microsoft Store 和傳遞最佳化的活動,有些應用程式也會減少自己的用量,但其他程式照樣可以全速下載。