跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • vscode remote 只要一连接服务器,服务器 CPU 负荷瞬间飙升到几乎不能运行
未分類
17 9 月 2020

vscode remote 只要一连接服务器,服务器 CPU 负荷瞬间飙升到几乎不能运行

vscode remote 只要一连接服务器,服务器 CPU 负荷瞬间飙升到几乎不能运行

資深大佬 : kisshere 5

我就纳闷了一个编辑器去拖累服务器干嘛???!!! vscode remote 连接服务器后,top 命令查看,一个叫“node”的进程 CPU 消耗量瞬间飙升,然后没过几分钟服务器就被这个进程拖垮了,关了 vscode,服务器负荷又正常了,这个怎么破?服务器 centos 系统,未安装 nodeJS

大佬有話說 (21)

  • 資深大佬 : wtks1

    服务器的硬件配置太低?

  • 資深大佬 : heyjei

    估计是在做索引吧,你服务器上的 vscode 的目录删了让他重新初始化试试看

  • 資深大佬 : LokiSharp

    微软 Azure 上 VSCode Online 官方推荐配置我记得是 2C4G 朝上,这玩意就是个鸡肋

  • 主 資深大佬 : kisshere

    @heyjei 删了,然后启动 vscode 后还是一样,又生成了这个文件夹,然后 CPU 又飙升了

  • 資深大佬 : Kilerd

    你猜猜 vscode 是用什么写的?

  • 主 資深大佬 : kisshere

    @Kilerd vscode 用什么写的管服务器啥事,拖累我本地 Windows 也不可能拖累服务器啊

  • 資深大佬 : tfdetang

    vscode remote 是需要在 remote 服务器装一个 vscode server 的。 你本地只是展示 UI, 剩余的 vscode 功能和代码执行都是放在 remote 的,所以你觉得为什么一个叫 node 的进程让你那么卡?

  • 資深大佬 : rbe

    碰到过类似的事情,用 windows 做 server(普通 window10,非 win server),16g i7 4790,开了 remote 后 CPU 跑满,不得已关掉了。但这个不是必现的。

  • 資深大佬 : keepeye

    我用的 wsl remote,各种卡,插件不能正常使用,遂放弃

  • 資深大佬 : asanelder

    俺猜是 2G1 核,之前也是这情况

    试试 4G2 核?

  • 資深大佬 : ruanimal

    主 remote 编辑的文件夹太大了吧

  • 資深大佬 : oott123

    那就不要用 vscode remote 啦,试试这个: https://marketplace.visualstudio.com/items?itemName=liximomo.sftp

  • 資深大佬 : xiaotianhu

    +1
    同事用这玩意,开发机直接要凉了感觉

    关了好多了.
    猜测是服务端 node 在搞索引.开发机是机械盘,扛不住

  • 資深大佬 : kokodayo

    还有个方案:服务器上装 linux 版 vs code,然后 X11 Forwarding

  • 資深大佬 : zhenjiangidc

    硬盘不行???

  • 資深大佬 : MengiNo

    都叫 remote 了,不拖死服务器难道还拖死本机么 … 为了让我那 8G 的 15 款 mbp 再发挥几年余热,前一段搞了个 2c4g 的腾讯云,vscode-remote 体验挺棒的,mbp 上只要 在 /usr/local/bin 里放一个 dockerd 的二进制文件,其他都交给服务器,连 git 甚至都可以不用装(正好 big sur 的预览版 也有 bug 装不了 xcode-select 套件),.devcontainer 文件夹 直接放在 Dropbox / Github 里真的很方便。

    最好是推荐 2c4g 的机器,1c2g 倒也不是说不行,消耗较少的语言、项目还是可以跑得动的,合理控制插件即可。比如 Laravel 项目,Gitlens + PHP Intelephense + PHPUnit Test Explorer + phpfmt + DocBlocker 1c2g 还是很舒服的。其他的像 Golang 、Python 1c2g 也勉强能用。但是 一个 Typescript 的基于 Antd 的管理后台,仅开了 Gitlens + Eslint + Prettier 直接卡的起飞,必须上 2c4g 否则 yarn install 都拉不下来(毕竟 black hole ),直接 CPU 冲到 100%,服务器就假死了(等好久 zsh 进程会把 node 进程杀掉以恢复正常,但是我是实在懒得等,都是直接去腾讯云后台强制重启)。

    如果没有什么特别的需求,特别是本地机器性能不错的情况下,还是 WSL2 + Docker,感觉足够了,传统一点好。vscode-remote 不但要投入服务器成本,在某些语言的项目上也只能算差强人意(要不是 remote 我是真的一点都不想用本身就是 Js 写的 vscode )。

  • 資深大佬 : lovecy

    “我就纳闷了一个编辑器去拖累服务器干嘛?”,其实这个就跟你浏览器请求一个页面,结果服务器崩了一个道理。
    remote 连接后,是不是开了比较大的文件夹或工作区,还有插件太多也会导致资源占用高

  • 資深大佬 : spcharc

    为什么都猜测是 node 搞索引?

    这是微软版 linux kernel 的锅啊。
    node 的服务端有个 event loop 。它和所有 event loop 一样,如果没事可做它会做个 syscall 睡一会儿,起来接着检查有没有事可做。
    然而 wsl 里 linux 内核是 windows 模拟的,较新版本的 glibc ( 2.31 或以上)因为改写了 nanosleep 的逻辑,会无法正确调用这个模拟 kernel 的 syscall 。
    老版本使用的是 CLOCK_MONOTONIC,新版本改用 CLOCK_REALTIME,而 WSL 从来没有支持过后者。微软当时做模拟 kernel 是针对老 glibc 。
    因为大量程序都要用到 glibc,这会导致各种程序里所有要 sleep 的地方都会立刻返回,包括 node 。
    https://sourceware.org/git/?p=glibc.git;a=commit;f=posix/nanosleep.c;h=3537ecb49cf7177274607004c562d6f9ecc99474

    自己在测试 wsl 里测试 bash 命令:
    sleep 5
    如果这个命令立刻返回了,而不是等五秒再返回,恭喜你中招了。

    解决方案:
    降级 glibc 到 2.30 或以下,或换老发行版环境,或 wsl2 走起,或加入微软 Insider 测试渠道来升级微软修复过的 kernel

  • 資深大佬 : ruanimal

    @spcharc lz 的是服务器,不是 wsl 。。。

  • 資深大佬 : spcharc

    @ruanimal 原来如此。我知道这次 sleep 的升级会导致 wsl 出现问题,看到 vscode-remote 就以为又是这个问题

    既然是 centos,那我就不懂了

    说起来我的 vscode-remote 连过树莓派,在派上这么弱的性能都没问题,不懂为什么主服务器会被卡。个人感觉 node 服务端运行起来不怎么占用资源

  • 資深大佬 : ruanimal

    @spcharc remote 看项目的,如果项目很大,文件很多,对服务器的压力其实很大,而且服务器的主频一般不高

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具