我有一个由 100 台机器组成的网络。
一台机器(同时)能连接多少台机器有限制吗?
例如,我可以让 99 台机器ssh
与第 100 台机器保持持续连接吗?我可以让每台机器(100 台中的每一台)ssh
与所有其他 99 台机器保持持续连接吗?
每个这样的连接占用多少内存?
答案1
一台机器(同时)能连接多少台机器有限制吗?
它最终会受到许多因素的限制 - 最大打开文件数、可用内存等等 - 但 100 个连接并不是很多。
要限制连接数,请使用连接限制iptables 中的选项。
如果您想测量每个连接使用了多少内存(平均而言),那么开始记录连接数并将其与可用内存(减去缓冲区+缓存)绘制成图表。
答案2
我们使用登录服务器来启动大量会话。实际达到最大值的是 bash/shell 会话,而不是 ssh 连接本身。我们为每个会话使用非常长的“历史记录”(history -a 规则),这才是真正消耗内存的地方。因此不应该有限制,但由于运行大量 shell 会话,可能会有实际限制。ssh 连接本身的大小约为 bash 的一半(YMMV)从跳转框使用 ps_mem.py(一个非常方便的内存使用分类器)
私有 + 共享 = 程序使用的 RAM
23.8MiB+13.4MiB=37.1MiB sshd(17)
63.1 MiB + 1.6 MiB = 64.7 MiB bash(19)