packet_write_wait:连接到 xxxx:管道断裂

packet_write_wait:连接到 xxxx:管道断裂

我已经在 Google Cloud GPU 上运行代码几天了。最近,一个问题频繁出现,让我头疼了好几天。

一段时间后,会出现错误信息

packet_write_wait: Connection to x.x.x.x: Broken pipe

程序就会停止运行。

我尝试了一些在线建议,例如向服务器发送保持活动消息。但没有任何帮助。

我非常感激您的帮助!

答案1

使用 SSH 连接到服务器时,如果 SSH 连接上没有“明显”的活动,则空闲连接可能会被终止。如果您通过 SSH 连接启动程序,但该程序在一段时间内没有终端输入或输出活动,则服务器可能会终止该连接。

例如,服务器上运行的 HAProxy 软件可能断开空闲的客户端连接经过预设时间(比如 30 分钟)后。

如果你的问题是由看似空闲的 SSH 会话引起的,你可以通过设置以下方式让 SSH 保持连接活动:服务器存活间隔服务器存活数上限参数。在某些情况下,将 ServerAliveInterval 设置为 30 或 60 秒可能就足够了,但将 ServerAliveCountMax 保留为其默认值 3。但请阅读手册页以确定组合如何影响各种情况下的行为(空闲连接与存在连接问题的链接)。

服务器存活间隔

设置超时间隔(以秒为单位),如果在此间隔内未从服务器收到任何数据,ssh(1) 将通过加密通道发送一条消息以请求服务器做出响应。默认值为 0,表示这些消息将不会发送到服务器。

来自 ssh 手册页:

ssh_config 手册

ssh(1) 按以下顺序从以下来源获取配置数据:1. 命令行选项 2. 用户配置文件 (~/.ssh/config) 3. 系统范围配置文件 (/etc/ssh/ssh_config)

尝试man ssh了解如何设置命令行选项。

ssh -o ServerAliveInterval=30 -o ServerAliveCountMax=5

答案2

遇到同样的问题,因为有人在网络中插入了一台新设备,并错误地设置了我正在访问的设备的 IP 地址。我可以识别出这个正在运行

arp {IP}

(在 Linux 上)并检查 MAC 地址是否发生变化。设备从网络中移除后,与主机建立了稳定的 ssh 连接。

如果您无法物理找到该设备,另一个选择是将交换机中的 MAC 地址设为黑洞。

相关内容