VS Code常见问题
多个实例共享SFS盘时VS Code配置指导
用户可以选择自动配置或者手工配置
自动配置
1.安装VS Code插件
2.重启旧实例,或者创建新实例
手工配置
- 配置参数:
打开VS Code Settings
1)搜索 Lockfiles in Tmp 勾选该选项,可以解决在nfs场景下获取文件锁失败的问题。
2)搜索 Remote server listen on socket 勾选该选项,可以解决多人同一个版本连接实例冲突的部分问题。
- SSH连接环境执行命令:
1)连接远端环境
-
方法一:在网页上打开notebook -> 进入Terminal
-
方法二:在CMD使用命令连接远程环境:
ssh -tt -o StrictHostKeyChecking=no -i ${IdentityFile} ${User}@${HostName} -p ${Port}
参数说明:
- IdentityFile:本地密钥路径
- User:用户名,例如:ma-user
- HostName:IP地址
- Port:端口号
2)在Terminal/CMD中执行命令修改软连接的目标目录:
mkdir -p /home/ma-user/work/.vscode-server/$INSTANCE_ID
ln -snf /home/ma-user/work/.vscode-server/$INSTANCE_ID /home/ma-user/.vscode-server
其中$INSTANCE_ID代表notebook实例ID。
这样配置后再执行远程连接,vscode-server包和远程插件都会被安装在在/home/ma-user/work/.vscode-server/$INSTANCE_ID目录下,可以做到多个实例之间的隔离。
备注:执行上述命令后,VS Code首次连接时会重新下载并安装vscode-server包,需要半分钟左右,连接成功后,需要重新安装python等插件。
VSCode连接不上时排查
步骤一: 检查实例状态是否处于运行中
步骤二: 实例处于运行中,在CMD使用命令连接远程环境:
ssh -tt -o StrictHostKeyChecking=no -i ${IdentityFile} ${User}@${HostName} -p ${Port}
参数说明:
- IdentityFile:本地密钥路径
- User:用户名,例如:ma-user
- HostName:IP地址
- Port:端口号
步骤三: 使用CMD可以连接到远程环境,但是使用VS Code连接失败时,请查看VSCode常见问题
若使用CMD连接失败,请联系华为方或者在论坛发帖留言
VSCode常见问题
问题1:解决vscode-server相关问题
1)查看VSCode版本号
打开VS Code -> 单击Help -> 单击About -> 复制Commit的值
2)连接远端环境
在网页上打开notebook -> 进入Terminal
3)执行删除vscode-server命令
rm -rf /home/ma-user/.vscode-server/bin/VSCode版本号
4)重新进行远程连接
问题2:Cannot find module minimist
由于VSCode-server安装或更新时发生了错误,VSCode官方给出的规避手段总结为:在网页版的notebook中打开Terminal,执行语句:rm -rf /home/ma-user/.vscode-server/bin/VSCode版本号,然后重新进行连接。VSCode最新版本完成修复,ModelArts正在集成测试,测试完成后会将新版本预置,当前只能通过规避手段进行处理。
社区已知问题连接:
https://github.com/microsoft/vscode-remote-release/issues/6772
https://github.com/microsoft/vscode-remote-release/issues/6804
问题3:The VS Code remote Server failed to start
根因:由于VSCode版本与Remote-ssh插件包不匹配,导致出现该错误,建议升级Remote-ssh插件或者降低VSCode版本。
具体操作见https://support.huaweicloud.cn/modelarts_faq/modelarts_05_3119.html
进一步分析:你当前的VSCode的版本号和Remote-SSH版本号,以及近期是否打开VSCode自动更新,如果是可以参考https://code.visualstudio.com/docs/supporting/faq#_how-do-i-opt-out-of-vs-code-autoupdates关闭自动更新
问题4:VS Code远程连接时报rm: cannot remove xxx/.nfsxxx Device or resource busy
.nfs文件是NFS协议中的一种临时文件,当NFS客户端删除一个正在被打开的文件时可能会产生这种类型文件。.nfs文件是NFS客户端用于管理文件系统中被打开文件的删除行为。如果一个进程打开的某个文件被另一个进程删除,该进程会将此文件重命名为.nfsXXX类型文件。当这个文件的打开引用计数为0时,客户端会主动删除该文件;如果该客户端未清理该文件时就已经crash,这些文件将会残留在文件系统中。
这里需要手工删除一下该文件,然后重新执行VS Code连接
删除.nfs文件请参考:https://support.huaweicloud.cn/sfs_faq/sfs_01_0133.html
如果执行lsof命令时查找不到哪个进程占用了文件,请稍侯,该文件可能会有SFS客户端自动清理,文件被清理后,可重新执行VS Code连接操作。
问题5:VS Code连接上后长时间未操作,连接自动断开
VS Code ssh连接使用完后,窗口未关闭,隔夜来操作发现VS Code在重连环境,无弹窗报错。左下角显示如下图:
问题原因:
查看VS Code Remote-SSH日志发现,连接在大约2小时后断开了:
分析结论:用户ssh交互操作停止后一段时间,防火墙对于空闲链接进行了断开操作,后台的实例运行是一直稳定的,重连即可再次连上。
具体如下:
-
ssh默认配置中不存在超时主动断连的动作,但是防火墙会关闭超时空闲连接
(参考:http://bluebiu.com/blog/linux-ssh-session-alive.html) -
如果想保持长连接不断开,可以通过配置ssh定期发送通信消息,避免防火墙认为链路空闲而关闭:
- 客户端配置(用户可根据需要自行配置,不配置默认是不给服务端发心跳包)
按照图示顺序点击打开VS Code ssh config配置文件
找到自己连接的远端开发环境配置项,增加配置信息:
配置信息示例如下:
Host ModelArts-xx
……
ServerAliveInterval 3600 # 增加这个配置,单位是秒,每1h向服务端主动发个包
ServerAliveCountMax 3 # 增加这个配置,3次发包均无响应会断开连接
比如防火墙配置是2小时空闲就关闭连接,那我们客户端配置ServerAliveInterval小于2小时(比如1小时),就可以避免防火墙将连接断开。
- 服务器端配置(notebook当前已经配置,24h应该是长于防火墙的断连时间配置,该配置无需用户手工修改,写在这里仅是帮助理解ssh配置原理)
配置文件路径:/home/ma-user/.ssh/etc/sshd_config
每24h向client端主动发个包,3次发包均无响应会断开连接
- 对于业务有影响的需要进行长链接保持的场景,尽量将日志写在单独的日志文件中,将脚本后台运行,例如:
nohup train.sh > output.log 2>&1 & tail -f output.log
问题6:由于VS Code自动升级后,导致远程连接时间过长
问题原因:需要重新下载新版VSCode-server
解决方法:禁止VS Code自动升级,点击左下角
选择Settings项,搜索Update: Mode,将其设置为none
查看更多连接失败问题
- 点赞
- 收藏
- 关注作者
评论(0)