在使用计算平台时,用户可能经常会遇到SSH连接断开、关闭控制台,导致任务运行中途失败的情况。这不仅耽误了用户的宝贵时间,也浪费了平台的计算资源。出现这个情况的根本原因就是用户对TCP连接的工作原理不熟悉,我们可以通过以下方式规避这个问题:
检查个人电脑的网络是否稳定
用户在通过Wi-Fi、VPN或者代理工具进行网上冲浪时,经常会出现网络不稳定的情况,从而使个人电脑与计算平台的连接断开,导致任务失败。如果断开的频率很高,需要优先切换到相对稳定的网络环境。
检查个人电脑的SSH工具是否有特殊设置
常用SSH工具都会有连接超时的设置,有些工具默认的超时时间很短,当连接时间到期后会自动断开与平台的连接。比如MobaXterm就需要手动设置“SSH keepalive”选项。
尽可能使用sbatch方式提交长期运行的任务
在使用公共集群时,用户主要可以选择salloc、sbatch两种提交作业的方式。salloc方式适用于申请少量资源来调试代码,并且建议是短时间运行的。如果任务需要长时间运行,则建议使用sbatch方式提交。sbatch方式提交的作业,不会因为SSH连接断开、关闭控制台等不稳定因素而失败,会一直在作业系统运行直到结束。
使用终端复用工具运行任务
个人实例的用法和公共集群的作业提交方式有些不同,一般是直接运行用户进程。SSH连接断开或者关闭控制台后,用户进程也会随父进程的退出而退出。这时可以通过终端复用工具,并在终端复用工具的窗口中运行用户进程,这样退出终端窗口(不是kill窗口),进程依然会在后台正常运行。等需要查看运行进度或结果时,再打开该窗口就可以了。常用的终端复用工具有tmux、screen等。