vscode ssh-remote 疑似内存泄漏问题
vscode ssh-remote疑似内存泄漏问题
系统信息与版本号
版本:1.88.1(通用)
日期:2024-04-10T17:42:52.765Z
Electron: 28.2.8
ElectronBuildId: 27744544
Chromium:120.0.6099.291
Node.js:18.18.2
V8:12.0.267.19-electron.0
操作系统:Darwin x64 23.4.0
问题描述
vscode 的 ssh-remote 插件连接之后,会发现内存不断上涨,然后导致云主机崩溃。ubantu22.04与debian等系统均有这种情况。
疑似出现了内存泄漏,经过仔细检查发现vscode-server这个进程会不断添加新的进程进去,问题复现步骤:
- 使用
TypeScript文件打开远程工作区 - 等待“正在初始化
JS/TS语言功能”状态栏指示器停止出现。 - 运行此脚本以获取
ionotify观察程序进程列表:脚本 - 请注意命令类似于 ~/.vscode-server/cli/servers/Stable-e170252f762678dec6ca2cc69aba1570769a5d39/server/node 的进程数量
- 重新加载窗口
- 重复步骤 2 到 4,你会发现步骤 4 中记下的数字比上次增加了。
脚本
#!/bin/bash# Get the procs sorted by the number of inotify watches
# @author Carl-Erik Kopseng
# @latest https://github.com/fatso83/dotfiles/blob/master/utils/scripts/inotify-consumers
# Discussion leading up to answer: https://unix.stackexchange.com/questions/15509/whos-consuming-my-inotify-resources
#
# If you need ultimate speed, use https://github.com/fatso83/dotfiles/commit/inotify-consumers-v1-fastest
# # Speed enhancements by Simon Matter <simon.matter@invoca.ch>
#
# A later PR introduced a significant slowdown to gain better output, but it is insignificant on most machines
# See this for details: https://github.com/fatso83/dotfiles/pull/10#issuecomment-1122374716main(){# get terminal widthdeclare -i COLS=$(tput cols 2>/dev/null || echo 80)declare -i WLEN=10printf "\n%${WLEN}s %${WLEN}s\n" "INOTIFY" "INSTANCES"printf "%${WLEN}s %${WLEN}s\n" "WATCHES" "PER "printf "%${WLEN}s %${WLEN}s %s\n" " COUNT " "PROCESS " "PID USER COMMAND"printf -- "------------------------------------------------------------\n"generateData
}usage(){cat << EOF
Usage: $0 [--help|--limits]-l, --limits Will print the current related limits and how to change them-h, --help Show this help
EOF
}limits(){printf "\nCurrent limits\n-------------\n"sysctl fs.inotify.max_user_instances fs.inotify.max_user_watchescat <<- EOF
Changing settings permanently
-----------------------------
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p # re-read config
EOF
}if [ "$1" = "--limits" -o "$1" = "-l" ]; thenlimitsexit 0
fiif [ "$1" = "--help" -o "$1" = "-h" ]; thenusageexit 0
fiif [ -n "$1" ]; thenprintf "\nUnknown parameter '$1'\n" >&2usageexit 1
figenerateData(){local -i PROClocal -i PIDlocal -i CNTlocal -i INSTANCESlocal -i TOTlocal -i TOTINSTANCES# read process list into cachelocal PSLIST="$(ps ax -o pid,user=WIDE-COLUMN,command --columns $(( COLS - WLEN )))"local INOTIFY="$(find /proc/[0-9]*/fdinfo -type f 2>/dev/null | xargs grep ^inotify 2>/dev/null)"local INOTIFYCNT="$(echo "$INOTIFY" | cut -d "/" -s --output-delimiter=" " -f 3 |uniq -c | sed -e 's/:.*//')"# unique instances per process is denoted by number of inotify FDslocal INOTIFYINSTANCES="$(echo "$INOTIFY" | cut -d "/" -s --output-delimiter=" " -f 3,5 | sed -e 's/:.*//'| uniq |awk '{print $1}' |uniq -c)"local INOTIFYUSERINSTANCES="$(echo "$INOTIFY" | cut -d "/" -s --output-delimiter=" " -f 3,5 | sed -e 's/:.*//' | uniq |while read PID FD; do echo $PID $FD $(grep -e "^\ *${PID}\ " <<< "$PSLIST"|awk '{print $2}'); done | cut -d" " -f 3 | sort | uniq -c |sort -nr)"set -ecat <<< "$INOTIFYCNT" |{while read -rs CNT PROC; do # count watches of processes foundecho "${PROC},${CNT},$(echo "$INOTIFYINSTANCES" | grep " ${PROC}$" |awk '{print $1}')"done} |grep -v ",0," | # remove entires without watchessort -n -t "," -k 2,3 -r | # sort to begin with highest numbers{ # group commands so that $TOT is visible in the printfIFS=","while read -rs PID CNT INSTANCES; do # show watches and corresponding process infoprintf "%$(( WLEN - 2 ))d %$(( WLEN - 2 ))d %s\n" "$CNT" "$INSTANCES" "$(grep -e "^\ *${PID}\ " <<< "$PSLIST")"TOT=$(( TOT + CNT ))TOTINSTANCES=$(( TOTINSTANCES + INSTANCES))done# These stats should be per-user as well, since inotify limits are per-user..printf "\n%$(( WLEN - 2 ))d %s\n" "$TOT" "WATCHES TOTAL COUNT"
# the total across different users is somewhat meaningless, not printing for now.
# printf "\n%$(( WLEN - 2 ))d %s\n" "$TOTINSTANCES" "TOTAL INSTANCES COUNT"}echo ""echo "INotify instances per user (e.g. limits specified by fs.inotify.max_user_instances): "echo ""(echo "INSTANCES USER"echo "----------- ------------------"echo "$INOTIFYUSERINSTANCES") | column -techo ""}main
原问题网址
简单来描述这个问题,就是每次使用ssh-remote连接之后,会出现一个问题:
~/.vscode-server/cli/servers/Stable-…这个进程的数量增加了
当你关闭连接后,这个进程不会消失,但是下一次打开连接后,会产生新的进程,这样的结果就是导致进程数量不断增加导致占用的内存越来越多,最后导致系统崩溃重启。
修复方式
将 vscode 更新到预发布版本,开发者已经在最新的预发布版本中解决了这个问题。
相关文章:
vscode ssh-remote 疑似内存泄漏问题
vscode ssh-remote疑似内存泄漏问题 系统信息与版本号 版本:1.88.1(通用) 日期:2024-04-10T17:42:52.765Z Electron: 28.2.8 ElectronBuildId: 27744544 Chromium:120.0.6099.291 Node.js:18.18.2 V8&…...
初识自然语言处理NLP
文章目录 1、简介2、自然语言处理的发展简史3、语言学理论句法学(Syntax)语义学(Semantics)语用学(Pragmatics)形态学(Morphology) 4、统计与机器学习方法n-gram 模型隐马尔可夫模型…...
分布式系统架构-微服务架构
一.什么是分布式系统架构 分布式系统架构是指将一个单一的应用程序或服务拆分成多个独立的部分,这些部分可以在不同的计算机、服务器或者地理位置上运行,并通过网络进行通信和协作。分布式系统的设计旨在提高系统的可靠性、可用性和扩展性,同…...
docker搭建内网穿透服务
docker搭建内网穿透服务 frpfrpsfrpc zerotier构建 moon构建 planet查询客户端配置moon方法 nps frp 参考文章:https://blog.csdn.net/weixin_43909881/article/details/126526059 frps docker pull snowdreamtech/frps docker run --restartalways --network ho…...
html+css+js网页设计 体育 金轮健身7个页面
htmlcssjs网页设计 体育 金轮健身7个页面 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&…...
BGP基础简介(一)
AS 是一组运行相同IGP协议的设备组成的网络 AS号: 16bit:64512~65535为私有AS32bit:4200000000~4294967294为私有AS其余都是共有AS,需要向IANA申请 EGP 外部网关协议,bgp的前身,缺点:只发布路由信息,不…...
力扣面试150 反转链表 II 三指针
Problem: 92. 反转链表 II 👨🏫 参考题解 特殊情况 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val…...
GPT-4.o mini
https://share.xuzhugpt.cloud/ GPT-4.o mini 目前免费使用 把上面[chatgpt4o-mini-xuzhu]复制到UserToken的文本框中 点击[个人账户] 测试一下哈,看看: GPT-4.o代码有时候还是有严重错误:好奇怎么来的 上面是我写得,下面是GPT写…...
【C++】优先级队列(容器适配器)
欢迎来到我的Blog,点击关注哦💕 前言 string vector list 这种线性结构是最基础的存储结构,C(STL)container很好的帮助我们数据存储的问题。 容器适配器 介绍 容器适配器是C标准模板库(STL)中…...
docker代理
Dockerd 代理 sudo mkdir -p /etc/systemd/system/docker.service.d sudo touch /etc/systemd/system/docker.service.d/proxy.confproxy.conf [Service] Environment"HTTP_PROXYproxy.example.com:8080/" Environment"HTTPS_PROXYproxy.example.com:8080/&qu…...
(四)activit5.23.0修复跟踪高亮显示BUG
一、先看bug 在 (三)springboot2.7.6集成activit5.23.0之流程跟踪高亮显示 末尾就发现高亮显示与预期不一样,比如上面的任务2前面的箭头没有高亮显示。 二、分析原因 具体分析步骤省略了,主要是ProcessInstanceHighlightsResour…...
AsyncTask
AsyncTask简介 AsyncTask 是 Android 提供的一个轻量级的异步任务类,它允许在后台线程中执行耗时操作(如网络请求、数据库操作等),并在操作完成后更新 UI。其设计初衷是为了简化后台任务的处理,特别是在不需要复杂并发…...
嵌入式面试知识点总结 -- FreeRTOS篇
一、堆栈溢出检测 问题: 问题一:FreeRTOS堆栈溢出检测的方法? 解答: 参看:FreeRTOS学习 – FreeRTOSConfig.h介绍 两种堆栈溢出检测方法: 方法1: 开启方法,configCHECK_FOR_STACK_OVERFLOW…...
【深度学习】注意力机制(Transformer)
注意力机制 1.基础概念 1.1 查询、键和值 在人类的注意力方式中,有自主性的与非自主性的注意力提示两种解释方式。所谓自主性注意力提示,就是人本身主动想要关注到的某样东西;非自主性提示则是基于环境中物体的突出性和易见性,…...
【MySQL】将一张表的某一个值赋值到另一张表中
场景 两张表可以通过某个字段关联起来,并且想要将其中一张表的某个值赋值到另一张表的某个字段中 实操 在MySQL中,要将一张表(我们称之为Table_A)的某个字段的值赋给另一张表(Table_B)的对应字段&#x…...
怎样确定局域网里面是否有MAC地址冲突
目录 MAC地址冲突的现象1. 网络连接不稳定2. 数据包丢失3. 网络性能下降4. 无法访问特定设备5. 网络诊断工具的异常结果6. 网络安全问题 确定MAC地址冲突的方法如何解决MAC地址冲突总结 MAC地址冲突 是指在同一局域网(LAN)中,两个或多个设备具…...
springboot 大学生兼职平台系统-计算机毕业设计源码05282
摘 要 在当代大学生活中,兼职工作已经成为了许多学生的重要组成部分。校园兼职现象的普遍性及其对大学生生活的影响不容忽视。然而,现有的校园兼职系统往往存在信息不对称、管理不规范等问题。因此,我们需要深入理解校园兼职现象,…...
CentOS linux安装nginx
下载nginx-1.21.3.tar.gz 及 nginx-upstream-fair-master.zip 上传nginx-upstream-fair-master至/app/server/nginx/modules/解压 cd /app/server/nginx/modules unzip nginx-upstream-fair-master.zip上传nginx压缩包至**/app/server/nginx/ **(根据自己需求而定…...
事务性邮件接口API如何集成以实现自动化?
事务性邮件接口API有哪些优势?邮件接口API集成方法? 通过集成事务性邮件接口API,企业可以实现邮件发送的自动化,提高效率,增强用户体验。AokSend将探讨如何集成事务性邮件接口API以实现自动化,并提供一些最…...
zabbix 监控软件
zabbix 监控软件 自带图形化界面,通过网页就可以监控所有服务器的状态 事件告警,邮箱通知(噩梦) 短信,电话。 zabbix是什么? web界面提供的分布式监控以及网络监控功能的开源的企业级软件解决方案 监…...
老旧Mac终极重生指南:OpenCore Legacy Patcher完整教程
老旧Mac终极重生指南:OpenCore Legacy Patcher完整教程 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是一款强大的开源…...
NLP-StructBERT赋能内容去重:展示海量文本相似度排查惊艳效果
NLP-StructBERT赋能内容去重:展示海量文本相似度排查惊艳效果 每次打开内容平台,你是不是也经常看到一堆“换汤不换药”的文章?标题不一样,内容却大同小异。对于平台运营者来说,这更是个头疼的问题:怎么从…...
Pr剪辑效率翻倍秘籍:除了选对GPU加速,这3个隐藏设置让你的老电脑也起飞
Pr剪辑效率翻倍秘籍:除了选对GPU加速,这3个隐藏设置让你的老电脑也起飞 在视频剪辑的世界里,时间就是金钱。当你盯着进度条缓慢爬行,或者面对频繁的卡顿和崩溃时,那种无力感足以让任何创意工作者抓狂。很多人第一时间…...
Pixel Dream Workshop 创意激发:利用算法生成无限可能的艺术图案与纹理
Pixel Dream Workshop 创意激发:利用算法生成无限可能的艺术图案与纹理 1. 当算法遇见艺术:数字创作的新纪元 在传统艺术创作中,设计师们常常需要花费大量时间手工绘制图案和纹理。而如今,Pixel Dream Workshop的出现彻底改变了…...
SEO_ 揭秘影响搜索引擎排名的核心因素与算法
SEO核心因素解析:揭秘影响搜索引擎排名的算法 在互联网时代,搜索引擎优化(SEO)已成为每一个网站运营者的重要关注点。SEO不仅关系到网站的流量,更直接影响到网站的知名度和商业价值。究竟有哪些核心因素和算法影响着搜…...
GitHub协作开发AnythingtoRealCharacters2511项目指南
GitHub协作开发AnythingtoRealCharacters2511项目指南 1. 项目概述与协作价值 AnythingtoRealCharacters2511是一个专门将动漫角色转换为写实真人形象的AI模型项目。这个模型基于Lora技术,经过30900步训练,使用103组图组(合计206张图片&…...
Highlight.js在Vue3中的性能优化指南:按需加载 vs 全量引入
Highlight.js在Vue3中的性能优化实战:从全量引入到精准加载 当你的Vue3项目需要展示代码片段时,Highlight.js无疑是语法高亮的首选方案。但在大型应用中,直接全量引入这个强大的工具可能会让你的打包体积意外膨胀——完整的Highlight.js包含超…...
STM32一键下载电路设计与实现
1. STM32一键下载电路解析作为一名嵌入式开发者,我深知每次烧录程序都要手动切换BOOT0和复位键的痛苦。正点原子的这个一键下载电路设计确实巧妙,让我们来深入剖析它的工作原理。这个电路的核心在于利用CH340芯片的DTR#和RTS#信号,通过三极管…...
[具身智能-230]:大模型编程的一个最佳实践:先通过自然语言让大模型编写Python语言代码,功能和性能调通后,再让大模型把python程序转换成C++或其他语言的程序
这种“Python 原型验证 C 性能落地”的开发模式,完美契合了大模型(LLM)的能力特点以及现代软件工程的需求。结合最新的行业实践和技术原理,我为你深度解析为什么这种工作流如此有效,以及在实际操作中需要注意的关键点…...
告别纸上谈兵:用STM32和FreeRTOS动手复现NCRE嵌入式考试里的经典案例
告别纸上谈兵:用STM32和FreeRTOS动手复现NCRE嵌入式考试里的经典案例 当你在NCRE三级嵌入式考试的题库里反复刷到"任务调度优先级"或"I2C时序配置"这类概念时,是否觉得这些知识点就像漂浮在空中的理论碎片?作为经历过这个…...
