为什么CentOS 7.9中多进程占用相同的端口

为什么CentOS 7.9中多进程占用相同的端口

我现在使用此命令来查看端口正在被哪个进程使用:

lsof -i:443

但输出让我感到困惑:

[root@k8smasterone ~]# lsof -i:443
lsof: no pwd entry for UID 65532
lsof: no pwd entry for UID 1001
COMMAND     PID     USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
lsof: no pwd entry for UID 65532
traefik   13731    65532   10u  IPv4 10157368      0t0  TCP k8smasterone:35756->k8smasterone:https (ESTABLISHED)
lsof: no pwd entry for UID 1001
operator  24351     1001    6u  IPv4   515576      0t0  TCP k8smasterone:49222->k8smasterone:https (ESTABLISHED)
calico-ty 25072  polkitd    7u  IPv4   523993      0t0  TCP k8smasterone:49648->k8smasterone:https (ESTABLISHED)
wget      25509     root    4u  IPv4  9941865      0t0  TCP iZuf62lgwih3vksz3640gnZ:46538->cdn-185-199-110-154.github.com:https (ESTABLISHED)

这是告诉我 443 端口被多进程使用吗?这样对吗?为什么会发生这种情况?

答案1

不,这只是意味着您的进程 13731、24351 和 25072 均已与该主机的端口 443 建立连接。一台一次只能处理一个连接的 Web 服务器不是一个很好的服务器,不是吗?

此外,进程 25509 已连接到 github.com 的端口 443。

lsof命令显示已建立的网络连接,如下所示:

<local hostname/IP>:<local port> -> <remote hostname/IP>:<remote port>

因此,只有字段中指定的端口<local port>实际上属于该行列出的进程。这些都是随机的高编号端口:分别为 35756、49222 和 49648。这表明这些很可能是传出连接。

箭头右侧的部分仅指定连接的“远端”所在的位置:它可能连接到其他主机上的服务,或连接到同一主机上的端口。

请注意,箭头的方向与连接的建立方式无关:事实上,您的lsof输出还应该包括与 HTTPS 服务器进程(可能是 或某些其他服务器软件)相关的行httpdnginx可能有多个 PID 指示一个多线程/多进程 HTTPS 服务器,以及这些领域NAME

  • *:https (LISTEN)*也可能有所不同) - 表明该进程正在侦听传入连接
  • k8smasterone:https->k8smasterone:35756 (ESTABLISHED)- 进程13731连接的服务器端端
  • k8smasterone:https->k8smasterone:49222 (ESTABLISHED)- 进程24351连接的服务器端端
  • k8smasterone:https->k8smasterone:49648 (ESTABLISHED)- 进程25072的连接的服务器端端

但是,如果您的配置包括一些 DNAT、负载平衡或云网络技巧,那么实际的 HTTPS 服务器很可能位于其他主机中,因此lsof类似于这三行的行将出现在改为主机。

相关内容