我在 Azure 上创建了一个 Linux VM,上面有一个 Postgres 服务。VM 运行良好,但我遇到了断开连接的情况。
VM 断开 SSH 会话 - 它们只是被破坏了 - 就像与 Postgres 的连接一样。
Postgres DB 是一个小型开发数据库,大约有 20 个表,每个表有 20-30 条记录。VM 与之无关。
我以前没有遇到过这种情况。我多次从头开始重新创建此虚拟机,尝试了下一个区域 - 阿姆斯特丹(位于德国)以及都柏林 - 这两个区域的情况都一样。
这可能是什么问题?
答案1
编辑服务器端配置文件 /etc/sshd_config,如果要防止所有客户端断开连接,请添加以下两个选项:
客户端存活间隔 120
ClientAliveCountMax 720
第一个配置是服务器每 120 秒向客户端发送空数据包,第二个配置是服务器在客户端处于非活动状态时关闭连接720 个间隔,即 720*120 = 86400 秒 = 24 小时
在客户端,您还可以包括
主持人 *
客户端存活间隔 ...
客户端存活计数最大值 ...
服务器存活间隔 ...
你可以看看https://unix.stackexchange.com/a/3027以获得更详细的解释。
另一种情况可能是您需要在 Azure 负载均衡器上配置空闲超时;您可以在以下位置阅读更多信息:https://azure.microsoft.com/en-us/blog/new-configurable-idle-timeout-for-azure-load-balancer/
PowerShell 示例
将实例级公共 IP 的 TCP 超时配置为 15 分钟。
设置 AzurePublicIP –PublicIPName webip –VM MyVM ldleTimeoutInMinutes 15
IdleTimeoutInMinutes 是可选的。如果未设置,默认超时时间为 4 分钟。现在可以将其值设置为 4 到 30 分钟之间。
在虚拟机上创建 Azure 终结点时设置空闲超时
获取 AzureVM -服务名称“mySvc”-名称“MyVM1”| 添加->AzureEndpoint -名称“HttpIn”-协议“tcp”-公共端口 80 -本地端口 8080 -IdleTimeoutInMinutes 15| 更新 AzureVM