起因

有天,在群晖的 Web 界面,看到网络监控那里,上传速度竟然有 1-2M/s,漏油器上也看到群晖的上传很高,也就是说流量上传到了外网,卧槽,这到底是哪个进程吃我带宽的,找出来我非得杀掉不可。

可惜,群晖自带的 “资源监控” 无法查看进程对网络的占用。

过程

通常我们在 Linux 上是如何做的呢?1

Linux/Mac

  1. iftop

通过 iftop,我们可以找出占用 上传/下载 最高的TCP连接

这里以 Debian 为例吧

安装 iftop

1
apt install iftop

运行 iftop (默认是监听 eth0)

1
iftop

可以通过 -i 来指定其他的网络接口,比如

1
iftop -P -i en8

参数说明

1
2
-i interface     监听指定网络接口
-P 显示主机名及其端口

  1. netstat

上一步查到的 TCP 连接,包含 remote ip 和 端口。
使用 netstat ,可以定位到具体的进程。

1
netstat -pantu | grep [port]

在群晖上

因为群晖的系统,虽然是基于 debian,但是默认没有包管理器,无法通过 apt/yum 安装 iftop。不过群晖支持 docker。

  1. 群晖 - 套件中心 - docker - 安装

  2. ssh 连接群晖
    janten/iftop 这个镜像为我们提供了 iftop 命令

    1
    docker run -it --rm --net host janten/iftop -P -i eth0

如果本地没有没有这个镜像,会自动进行拉取,拉取镜像完成后,就可以看到 iftop 的运行界面

  1. 使用 netstat 定位进程
    1
    netstat -pantu | grep [port]

这样就能找到具体的进程了

参考:

  1. https://forum.synology.com/enu/viewtopic.php?t=143588
  2. https://askubuntu.com/questions/2411/how-do-i-find-out-which-process-is-eating-up-my-bandwidth