Linux Fedora 在哪里限制终端中并发打开的连接数?

Linux Fedora 在哪里限制终端中并发打开的连接数?

我周围有一些 Web 服务器,为了管理集群,我有时会使用脚本,该脚本会自动打开连接并使用 python 脚本将文件同步到它们,我遇到了一个奇怪的问题,我真的不知道如何解决它..

要重现测试用例,您应该有一个不会立即建立连接的远程目标(不在 LAN 中也不在本地主机中),并且连接应该在不要求密码的情况下运行(使用密钥文件)

我有 16 台运行 Fedora 的 PC,服务器有 Cent OS 5、s120 和 s121——我拥有的 2 台服务器的 IP 地址分别分配给/etc/hostss121 和 s120

这是一个示例命令,它同时在同一个 shell 中打开 9 个到 s120 的连接 + 9 个到 s121 的连接..并且它可以起作用!

gnome-terminal --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab
-  e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh
root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" -- tab 
-e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh
root@s121;\"" --tab -e "bash -c \"ssh root@s121;\"" --tab -e "bash -c \"ssh root@s121;\"" --tab 
-e "bash -c \"ssh root@s121;\"" --tab -e "bash -c \"ssh root@s121;\"" --tab -e "bash -c \"ssh
 root@s121;\"" --tab -e "bash -c \"ssh root@s121;\"" --tab -e "bash -c \"ssh root@s121;\"" --tab 
-e "bash -c \"ssh root@s121;\""

此命令尝试在同一个 shell 上打开 15 个连接,所有 15 个都 TO-> s120

gnome-terminal --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab
-e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh 
root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\""       
--tab - e   "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\""  --tab -e "bash 
- c \"ssh
 root@s120;\""  --tab -e "bash -c \"ssh root@s120;\""  --tab -e "bash -c \"ssh root@s120;\""  
--tab -e "bash -c \"ssh root@s120;\""  --tab -e "bash -c \"ssh root@s120;\""  --tab -e "bash -c 
\"ssh root@s120;\""

它会尝试打开 15 个连接,但其中 5 个选项卡几乎会立即关闭,只有 10 个连接保持打开状态。这个问题也发生在terminal_xfce(我更喜欢 gnome-terminal,因为我发现 gnome-terminal 不太稳定)

似乎不允许超过 10 个并发打开连接,

似乎一开始允许的并发连接不超过 10 个,但如果我打开 10 个选项卡,并等待连接开始,那么我就可以打开另一个带有 10 个选项卡的终端到同一台服务器。

(我还想说,在客户端和服务器上禁用 IP TABLES 防火墙时,测试结果是相同的)

我还必须说这个问题很烦人,特别是在将文件系统上的多个目标同步到同一台服务器时,lsyncd执行rsync会导致意外结果,因为连接被操作系统终止,终端测试用例更容易重现,即使处理起来问题更少。

答案1

如果所有连接都要使用脚本命令...为什么要使用 gnome-terminal 选项卡?您使用了大量实际上并不需要的资源,而这些资源可能是造成您遇到的限制因素的原因之一。

如果您让系统处理连接而不是强制 gnome-terminal 介入,您应该能够获得几乎(就您的目的而言)无限数量的连接。

for a in $( seq 1 50 ); do
  ssh root@s120 my_cool_script &
  ssh root@s121 my_cool_script &
done
wait

这应该在几秒钟内创建 100 个连接(50 个到 s120,50 个到 s121),所有连接都在运行'我的酷脚本'。只要你所做的一切都是按照脚本进行的,一切就会顺利进行。

“wait”命令使脚本等待所有后台作业完成后再继续。您可能不需要/不想要这样做。

(另外打字也少了很多……)

答案2

在 /etc/ssh/sshd_config 中查找 MaxStartups。

  • 它限制了未经授权的 sshd 并发登录。

  • 默认值为 10。

相关内容