确定出站流量的始发进程

use*_*802 11 linux tcpdump

我可以看到我的服务器正在发送大量流量。如果我去 netstat -apln | grep httpd 我可以看到所有流量都流向了一个 IP。

有没有办法可以看到正在使用什么脚本/文件将数据发送到该 IP?或者一般的任何IP?

我知道 tcpdump 可以查看数据包,但似乎无法做到这一点。

kas*_*erd 5

netstat命令只能告诉您当前打开了哪些连接,而不能告诉您每个连接已发送和接收的流量。要找出哪些连接正在传输大部分数据,您需要使用其他工具,例如iftoptcpdump

下一步做什么很大程度上取决于每个连接的生命周期以及建立连接的一端。如果您的一端是服务器,那么您应该能够识别属于服务器进程的侦听套接字。

如果它确实是一个httpd过程(正如您在问题中所暗示的那样),那么您的 Web 服务器访问日志就是查看的地方。要记住的一个警告是,每个请求仅在该请求的传输完成后才被记录。如果您正在提供大小为许多 MB 的文件,这可能会产生重大影响。

如果您的一端恰好是客户端,那么您将看不到侦听套接字,但是如果连接存在很长时间,您可以使用 找到连接和相应的进程netstat,一旦您确认哪个连接正在消耗带宽。

如果上述调查使您发现大多数流量发生在从您端建立的短期连接上,则netstat不足以确定哪个进程负责。该特定场景已在较旧的问题中进行了介绍