VS Code常见问题

举报
小聪不是小葱~ 发表于 2022/08/15 15:45:26 2022/08/15
【摘要】 VSCode常见问题

多个实例共享SFS盘时VS Code配置指导

用户可以选择自动配置或者手工配置

自动配置

1.安装VS Code插件
2.重启旧实例,或者创建新实例

手工配置

  1. 配置参数:
    打开VS Code Settings
    1)搜索 Lockfiles in Tmp 勾选该选项,可以解决在nfs场景下获取文件锁失败的问题。
    image.png
    2)搜索 Remote server listen on socket 勾选该选项,可以解决多人同一个版本连接实例冲突的部分问题。
    image.png
  2. SSH连接环境执行命令:
    1)连接远端环境
  • 方法一:在网页上打开notebook -> 进入Terminal
    image.png
    image.png

  • 方法二:在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的值
1.png

2)连接远端环境
在网页上打开notebook -> 进入Terminal
image.png
image.png

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在重连环境,无弹窗报错。左下角显示如下图:
image.png

问题原因:
查看VS Code Remote-SSH日志发现,连接在大约2小时后断开了:
image.png

分析结论:用户ssh交互操作停止后一段时间,防火墙对于空闲链接进行了断开操作,后台的实例运行是一直稳定的,重连即可再次连上。

具体如下:

  1. ssh默认配置中不存在超时主动断连的动作,但是防火墙会关闭超时空闲连接
    (参考:http://bluebiu.com/blog/linux-ssh-session-alive.html)

  2. 如果想保持长连接不断开,可以通过配置ssh定期发送通信消息,避免防火墙认为链路空闲而关闭:

  • 客户端配置(用户可根据需要自行配置,不配置默认是不给服务端发心跳包)
    按照图示顺序点击打开VS Code ssh config配置文件
    image.png
    找到自己连接的远端开发环境配置项,增加配置信息:
    image.png
    配置信息示例如下:
Host ModelArts-xx
  ……
  ServerAliveInterval 3600  # 增加这个配置,单位是秒,每1h向服务端主动发个包
  ServerAliveCountMax 3  # 增加这个配置,3次发包均无响应会断开连接

比如防火墙配置是2小时空闲就关闭连接,那我们客户端配置ServerAliveInterval小于2小时(比如1小时),就可以避免防火墙将连接断开。

  • 服务器端配置(notebook当前已经配置,24h应该是长于防火墙的断连时间配置,该配置无需用户手工修改,写在这里仅是帮助理解ssh配置原理)
    配置文件路径:/home/ma-user/.ssh/etc/sshd_config
    image.png
    每24h向client端主动发个包,3次发包均无响应会断开连接

参考:https://unix.stackexchange.com/questions/3026/what-do-options-serveraliveinterval-and-clientaliveinterval-in-sshd-config-d

  1. 对于业务有影响的需要进行长链接保持的场景,尽量将日志写在单独的日志文件中,将脚本后台运行,例如:
nohup train.sh > output.log 2>&1 & tail -f output.log

问题6:由于VS Code自动升级后,导致远程连接时间过长

image.png
问题原因:需要重新下载新版VSCode-server
解决方法:禁止VS Code自动升级,点击左下角image.png
选择Settings项,搜索Update: Mode,将其设置为none
image.png
image.png

查看更多连接失败问题

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。