一、概述

.NET社区修复问题可谓是龟速,一个BUG在.NET 7.0+版本才修复,你让我损失了几万块,我现在还记得客户那种质疑的表情,你了解那种尬尴的气氛吗?你让我一度怀疑dotnetty,我从来不去怀疑框架,运行时,每次碰到问题,我先提醒使用者先去找自己的问题,现在让我改变了这个看法。

凯亚 (Kayak) 是什么?

凯亚(Kayak)是基于.NET6.0软件环境下的surging微服务引擎进行开发的, 平台包含了微服务和物联网平台。支持异步和响应式编程开发,功能包含了物模型,设备,产品,网络组件的统一管理和微服务平台下的注册中心,服务路由,模块,中间服务等管理。还有多协议适配(TCP,MQTT,UDP,CoAP,HTTP,Grpc,websocket,rtmp,httpflv,webservice,等),通过灵活多样的配置适配能够接入不同厂家不同协议等设备。并且通过设备告警,消息通知,数据可视化等功能。能够让你能快速建立起微服务物联网平台系统。

凯亚物联网平台:http://117.72.121.2:3100(用户名:fanly  密码:123456)

链路跟踪Skywalking V8:http://117.72.121.2:8080/

surging 微服务引擎开源地址:https://github.com/fanliang11/surging(后面surging 会移动到microsurging进行维护)

二、压测分析

通过jmeter分析,高并发是没问题的,带宽一直是跑满的。

内存也没问题

但是你会发现,运行11天后内存就增长到1g多,每天要增长100多mb

三、用dump 分析

用vs 分析指出是dotnetty 的 ManualResetEventSlim 导致的,但是我看了代码没有问题啊,让我思绪有些混乱,就让我手足无措,甚至想下载dotnetty 把ManualResetEventSlim去掉试试,后面我发现mono社区有人讨论ManualResetEventSlim内存泄漏的问题,还是2020年提出的,一直没解决,后面2023年有人重提这个问题,有人回复这个问题是由于Queue删除队列没有把元素的引用一起删除导致的内存泄漏,而后在.NET 7.0把这个问题修复了。

原帖讨论:https://github.com/mono/mono/issues/19665

有人找到原因,在.NET CORE3.1 问题依旧存在

2023年重提这个问题

然后给出回复是.NET7.0 已经修复

然后surging和kayak 升级到.NET 8.0 ,启用几十个组件和协议,内存在70,80MB左右。后续观察内存是否还会增长

.net clr 8年才修复的BUG,你让我损失太多了的更多相关文章

  1. (知识分享)软硬件调试九法:第九条规则 如果你不修复一个bug,它将永远 存在

    1.查证问题确已被修复 如果遵循了“制造失败”这条规则,就知道如何验证你确实修复了问题.无论问题和修复看起来多么明显,你都无法保证修复是有效的,直到做了测试并验证. 2.查证确实你的修复措施解决了问题 ...

  2. mac下 使用 versions版本控制工具 修复游戏bug过程

    1,首先拥有游戏源代码文件,修复bug之前先使用versions工具进行更新: 2,查找指定的bug之前,先运行游戏,在源代码中觉得是bug的地方打个断点,然后运行游戏的对应有bug的地方,看是否会有 ...

  3. 关于Ext 修复源代码 bug的方法

    Ext修复源代码出现的问题 1.使用override属性,重写组件 定义一个新的组件,override属性设为要重写的源组件 例子: Extjs4.2.3遇到的一个bug,Datefield 选择不了 ...

  4. H5开发过程中修复的bug记录

    从2016年8月1日开始真正意义上的修复bug,也是自己开发之路的开端,希望在这里记录自己修bug过程中遇到的问题及解决方法,待能够自己开发需求的时候,计划记录开发新需求过程中遇到的问题,并且记录自己 ...

  5. Sentry Server 日志记录分析服务

    原文地址:http://blog.shanbay.com/archives/998 或许你不太会喜欢异常,特别是那些发生后继而沉默在应用日志里那些,你不知道从何开始,因为它们看起来并非那么平易近人,但 ...

  6. 安装paramiko

    前记: 各种奇葩事情都让我遇上了... 1.准备: 1>需要安装python 2>需要安装PyCrypto 2.安装python---省略 3.安装PyCrypto 1>检查pyth ...

  7. [福大软工] Z班 第2次成绩排行榜

    作业链接 http://www.cnblogs.com/easteast/p/7469291.html 评分细则 本次个人项目分数由三部分组成,分别是 (1)博客 - 20分,分数组成如下: 在文章开 ...

  8. css-inline-block和float的布局二者择其一?

    几个月前,带着不甘和忐忑毅然决然的在亚马逊离职了,当时不知道对我来说是好是坏,现在看来,当初的选择还是蛮不错的.感觉在亚马逊的几个月貌似接触最多的就是wiki和tt了,怀着对技术热忱离开,拒绝了腾讯, ...

  9. JVM源码分析之Metaspace解密

        概述 metaspace,顾名思义,元数据空间,专门用来存元数据的,它是jdk8里特有的数据结构用来替代perm,这块空间很有自己的特点,前段时间公司这块的问题太多了,主要是因为升级了中间件所 ...

  10. UWP 和 WPF 对比

    原文:UWP 和 WPF 对比 本文告诉大家 UWP 和 WPF 的不同. 如果在遇到技术选择或者想和小伙伴吹的时候可以让他以为自己很厉害,那么请继续看. 如果在看这文章还不知道什么是 UWP 和 W ...

随机推荐

  1. Brainfly: 用 C# 类型系统构建 Brainfuck 编译器

    Brainfuck 简介 Brainfuck 是由 Urban Müller 在 1993 年创造的一门非常精简的图灵完备的编程语言. 正所谓大道至简,这门编程语言简单到语法只有 8 个字符,每一个字 ...

  2. 600条Linux 命令总结

      一.基本命令 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 (SMBIOS / DMI) hdparm -i /de ...

  3. 最新demo版 | 如何0-1开发支付宝小程序之小程序页面功能介绍(三)

    前两期讲了小程序开发的准备工作以及前期需要如何调试,今天我们就来介绍下开发一个支付宝小程序页面需要了解哪些信息. 一个小程序页面的整体功能的构成离不开页面展示(AXML).页面样式(ACSS)以及页面 ...

  4. Asp.Net Core3.0 微信转账到零钱

    参考文档: 微信付款到零钱开发文档:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2 用于向微信用户个人付款, ...

  5. Transformer-Squared:停止微调 LLMs

    Transformer-Squared:停止微调 LLMs 自适应大语言模型背后的架构.Transformer-Squared 的数学与代码,以及奇异值分解 DALL-E 生成的图片 我们已经进入了这 ...

  6. [AHOI2013] 差异 题解

    后缀自动机维护子串公共后缀方便一点,所以直接倒序插入字符串即可. 我们给所有前缀打上标记,然后跑树形 \(dp\),设 \(sum_i\) 表示第 \(i\) 个点的子树内有多少个前缀,\(ans\) ...

  7. SQL取系统时间的前一个月的月份和年份

    SQL SERVER 提供了一些时间函数:取当前时间:select getdate()取前一个月的时间:SELECT DATEADD(MONTH,-1,GETDATE()) 月份减一个月取年份:SEL ...

  8. autMan奥特曼机器人-代理池配置教程

    一.优势: 全可视化 稳如老牛(从2.8.6开始) 隧道代理和接口获取,使用灵活 代理池运行状态指令可查:代理池 二.启用代理池并设置服务端口 代理池的启用与关闭,均为重启autMan生效 设置隧道代 ...

  9. oracle - [11] 那些年使用的emp表和dept表

    那些年在学习编程时,Oracle自带的emp表和dept表,本文进行整理和记录,以便于在今后的学习和工作中作为示例数据. 雇员表(emp) CREATE TABLE EMP( EMPNO NUMBER ...

  10. Scala List集合 List 有序不唯一,元素可重复

    package com.wyh.day01 import scala.collection.mutable.ListBuffer /** * List 有序不唯一,元素可重复 */ object Sc ...