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 在 设置 › 网络和 Internet › 高级网络设置 › 数据使用量 里按连接保存了累计总量,微软的按流量计费的连接一文在需要取消流量限制时也是让你来这个页面。在顶部选好网卡(WLAN 或以太网),页面会显示这个连接用了多少流量,下面列着用过它的应用。
同一个页面还能给这个连接设流量限制,2023 年的一次 Windows 配置更新加上了按天和按周的限制,并会显示超出限制多少。限制本身不会拦下任何东西,快到上限时 Windows 会提醒你,在 Wi-Fi 上它还会把「按流量计费的连接」开关锁在打开状态,这一点在后面一节会用到。
列表里出现一个很大的「系统」或 Windows 条目很正常,更新、传递优化和其他内置组件都归在这一项下面,所以「系统」下的数字很大,指向的是 Windows 更新和传递优化,不能当成有东西藏在里面的证据。
谁在连到哪里
问题变成「这个程序在跟谁通信」时,就别看速率了,改看连接。在资源监视器里展开「TCP 连接」,看你勾选的那个进程的「远程地址」和「远程端口」两列,命令提示符里用 netstat 也能拿到同样的列表:
netstat -ano
netstat 参考文档解释了这些开关,-a 显示所有连接和侦听端口,-n 让地址保持数字形式、不去解析名称,-o 加上进程 ID(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 更新和传递优化 | 托管传递优化的 svchost.exe,数据使用量里的「系统」 |
设置 › Windows 更新 › 高级选项 › 传递优化 |
| OneDrive 同步 | OneDrive.exe |
OneDrive 设置 › 同步和备份 › 高级设置 |
| Microsoft Store 应用更新 | Microsoft Store、svchost.exe |
按流量计费的连接会暂停 Store 下载 |
| 云备份应用 | 备份应用自己的进程 | 应用里的带宽或计划设置 |
| 游戏启动器 | Steam、Epic、Battle.net 之类 | 启动器的下载限速和更新计划 |
| 浏览器 | 好几个 msedge.exe 或 chrome.exe 进程 |
关掉对应标签页或扩展,也可以看浏览器自带的任务管理器 |
传递优化值得多看一眼,因为它还会上传。微软的隐私说明页写到,根据你的设置,电脑可能会把更新和应用的分片发给本地网络或互联网上的其他电脑,但从不发送个人内容。在 设置 › Windows 更新 › 高级选项 › 传递优化 里,把「允许从其他设备下载」设成「我本地网络上的设备」,或者直接关掉,两种情况下都照样能从微软拿到更新。传递优化一文讲了「高级选项」页面的内容,后台和前台下载可以按绝对值或百分比限速,上传带宽可以设上限,还有一个 1 到 500 GB 之间的每月上传限制。这些限制只管自动更新的下载,你自己发起的下载不受影响,页面里的「活动监视器」按来源显示本月的下载量和你的上传总量,「我的电脑是不是一直在给别人传更新」这个问题在这里能直接得到答案。
OneDrive 方面,微软的上传和下载速率一文说明可以设一个 50 到 100,000 KB/秒之间的固定上限,上传还能选「自动调整」。如果只是想空出一小时的带宽,从 OneDrive 图标里选「暂停同步」更省事,时间到了会自己恢复。OneDrive 要是同时还在占满硬盘,OneDrive 存储指南讲了「文件随选」。
关掉窗口后还一直有流量的浏览器,通常是还在后台运行,为什么 Edge 一直在后台运行一文讲了这项设置怎么改。
用按流量计费的连接压住后台下载
用的是热点或有流量上限的套餐时,把连接标成按流量计费,是 Windows 提供的覆盖面最广的开关。打开 设置 › 网络和 Internet › WLAN,选中当前连着的网络,打开「按流量计费的连接」(以太网的同一开关在 网络和 Internet › 以太网 下)。据微软的说明,打开后 Windows 更新只下载优先更新,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 更新、传递优化这类 Windows 组件归到了一起,打开传递优化的「活动监视器」看本月的下载和上传,如果上传量很大,就限制或关闭与其他设备共享。
Windows 能给单个应用限制流量吗?
设置里的流量限制作用于整个连接,单个应用要用它自己的带宽设置,OneDrive 和大多数游戏启动器都有,或者在你需要网络时先把它暂停。
把连接标成按流量计费,会停掉所有后台流量吗?
不会,它会减少 Windows 更新、Microsoft Store 和传递优化的活动,有些应用也会减少自己的用量,但其他程序照样可以全速下载。