vscode remote 只要一连接服务器,服务器 CPU 负荷瞬间飙升到几乎不能运行 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
kisshere
V2EX    程序员

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

  •  
  •   kisshere 2020-09-18 08:46:01 +08:00 6813 次点击
    这是一个创建于 1856 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    21 条回复    2020-09-20 11:58:26 +08:00
    wtks1
        1
    wtks1  
       2020-09-18 08:48:36 +08:00 via Android
    服务器的硬件配置太低?
    heyjei
        2
    heyjei  
       2020-09-18 09:03:27 +08:00
    估计是在做索引吧,你服务器上的 vscode 的目录删了让他重新初始化试试看
    LokiSharp
        3
    LokiSharp  
       2020-09-18 09:06:06 +08:00
    微软 Azure 上 VSCode Online 官方推荐配置我记得是 2C4G 朝上,这玩意就是个鸡肋
    kisshere
        4
    kisshere  
    OP
       2020-09-18 09:09:01 +08:00
    @heyjei 删了,然后启动 vscode 后还是一样,又生成了这个文件夹,然后 CPU 又飙升了
    Kilerd
        5
    Kilerd  
       2020-09-18 09:12:11 +08:00
    你猜猜 vscode 是用什么写的?
    kisshere
        6
    kisshere  
    OP
       2020-09-18 09:17:15 +08:00
    @Kilerd vscode 用什么写的管服务器啥事,拖累我本地 Windows 也不可能拖累服务器啊
    tfdetang
        7
    tfdetang  
       2020-09-18 09:33:56 +08:00   3
    vscode remote 是需要在 remote 服务器装一个 vscode server 的。 你本地只是展示 UI, 剩余的 vscode 功能和代码执行都是放在 remote 的,所以你觉得为什么一个叫 node 的进程让你那么卡?
    rbe
        8
    rbe  
       2020-09-18 09:34:32 +08:00
    碰到过类似的事情,用 windows 做 server(普通 window10,非 win server),16g i7 4790,开了 remote 后 CPU 跑满,不得已关掉了。但这个不是必现的。
    keepeye
        9
    keepeye  
       2020-09-18 09:35:57 +08:00
    我用的 wsl remote,各种卡,插件不能正常使用,遂放弃
    asanelder
        10
    asanelder  
       2020-09-18 09:54:27 +08:00
    俺猜是 2G1 核,之前也是这情况

    试试 4G2 核?
    ruanimal
        11
    ruanimal  
       2020-09-18 10:06:45 +08:00
    楼主 remote 编辑的文件夹太大了吧
    oott123
        12
    oott123  
       2020-09-18 12:31:24 +08:00
    那就不要用 vscode remote 啦,试试这个: https://marketplace.visualstudio.com/items?itemName=liximomo.sftp
    xiaotianhu
        13
    xiaotianhu  
       2020-09-18 13:13:04 +08:00
    +1
    同事用这玩意,开发机直接要凉了感觉

    关了好多了.
    猜测是服务端 node 在搞索引.开发机是机械盘,扛不住
    kokodayo
        14
    kokodayo  
       2020-09-18 13:18:27 +08:00
    还有个方案:服务器上装 linux 版 vs code,然后 X11 Fowarding
    zhenjiangidc
        15
    zhenjiangidc  
       2020-09-18 13:25:15 +08:00
    硬盘不行???
    MengiNo
        16
    MengiNo  
       2020-09-18 14:28:16 +08:00
    都叫 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
        17
    lovecy  
       2020-09-18 16:14:35 +08:00
    “我就纳闷了一个编辑器去拖累服务器干嘛?”,其实这个就跟你浏览器请求一个页面,结果服务器崩了一个道理。
    remote 连接后,是不是开了比较大的文件夹或工作区,还有插件太多也会导致资源占用高
    spcharc
        18
    spcharc  
       2020-09-19 11:09:27 +08:00
    为什么都猜测是 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
        19
    ruanimal  
       2020-09-19 11:11:39 +08:00
    @spcharc lz 的是服务器,不是 wsl 。。。
    spcharc
        20
    spcharc  
       2020-09-19 11:23:20 +08:00
    @ruanimal 原来如此。我知道这次 sleep 的升级会导致 wsl 出现问题,看到 vscode-remote 就以为又是这个问题

    既然是 centos,那我就不懂了

    说起来我的 vscode-remote 连过树莓派,在派上这么弱的性能都没问题,不懂为什么楼主服务器会被卡。个人感觉 node 服务端运行起来不怎么占用资源
    ruanimal
        21
    ruanimal  
       2020-09-20 11:58:26 +08:00
    @spcharc remote 看项目的,如果项目很大,文件很多,对服务器的压力其实很大,而且服务器的主频一般不高
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2845 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 02:43 PVG 10:43 LAX 19:43 JFK 22:43
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86