用 perfcollect 洞察 Linux 上.NET程序 CPU爆高

## 一:背景 ### 1. 讲故事 如果要分析 Linux上的 .NET程序 CPU 爆高,按以往的个性我肯定是抓个 dump 下来做事后分析,这种分析模式虽然不重但也不轻,还需要一定的底层知识,那有没有傻瓜式的 CPU 爆高分析方式呢? 相信有很多朋友知道 **B站713事件**,最终就是用 p

PerfView专题 (第十四篇): 洞察那些 C# 代码中的短命线程

## 一:背景 ### 1. 讲故事 这篇文章源自于分析一些疑难dump的思考而产生的灵感,在dump分析中经常要寻找的一个答案就是如何找到死亡线程的生前都做了一些什么?参考如下输出: ``` C# 0:001> !t ThreadCount: 22 UnstartedThread: 0 Backg

PerfView专题 (第十五篇): 如何洞察 C# 中的慢速方法

## 一:背景 ### 1. 讲故事 在 dump 分析旅程中,经常会遇到很多朋友反馈一类问题,比如: * 方法平时都执行的特别快,但有时候会特别慢,怎么排查? * 我的方法第一次执行特别慢,能看到慢在哪里吗? 相信有朋友肯定说,加些日志不就好了,大方向肯定是没问题的,但加日志的颗粒度会比较粗而且侵

PerfView专题 (第十六篇): 如何洞察C#托管堆内存的 "黑洞现象"

## 一:背景 ### 1. 讲故事 首先声明的是这个 `黑洞` 是我定义的术语,它是用来表示 `内存吞噬` 的一种现象,何为 `内存吞噬`,我们来看一张图。 ![](https://img2023.cnblogs.com/blog/214741/202307/214741-202307241003

记一次 .NET 某物流API系统 CPU爆高分析

## 一:背景 ### 1. 讲故事 前段时间有位朋友找到我,说他程序CPU直接被打满了,让我帮忙看下怎么回事,截图如下: ![](https://img2023.cnblogs.com/blog/214741/202307/214741-20230731153115090-546047217.pn

记一次 .NET某培训学校系统 内存碎片化分析

## 一:背景 ### 1. 讲故事 前些天有位朋友微信上找到我,说他们学校的Web系统内存一直下不去,让我看下到底是怎么回事,老规矩让朋友生成一个dump文件丢给我,看一下便知。 ## 二:WinDbg 分析 ### 1. 托管还是非托管 要想看托管还是非托管,可以用 `!address -sum

记一次 .NET某报关系统 非托管泄露分析

## 一:背景 ### 1. 讲故事 前段时间有位朋友找到我,说他的程序内存会出现暴涨,让我看下是怎么事情?而且还告诉我是在 Linux 环境下,说实话在Linux上分析.NET程序难度会很大,难度大的原因在于Linux上的各种开源工具主要是针对 C/C++, 和 .NET 一毛钱关系都没有,说到底

一个超经典 WinForm 卡死问题的最后一次反思

## 一:背景 ### 1. 讲故事 在我分析的 200+ dump 中,同样会遵循着 28原则,总有那些经典问题总是反复的出现,有很多的朋友就是看了这篇 [一个超经典 WinForm 卡死问题的再反思](https://www.cnblogs.com/huangxincheng/p/1686848

记一次 .NET 某电力系统 内存暴涨分析

一:背景 1. 讲故事 前些天有位朋友找到我,说他生产上的程序有内存暴涨情况,让我帮忙看下怎么回事,最简单粗暴的方法就是让朋友在内存暴涨的时候抓一个dump下来,看一看大概就知道咋回事了。 二:Windbg 分析 1. 到底是谁吃了内存 这个问题说的再多也不为过,一定要看清楚这个程序是如何个性化发展

一个强大的作图工具Mermaid入门

一个强大的作图工具Mermaid入门 参考网站: https://mermaid.live/edit 在线编辑器 https://mermaid.js.org/intro/ 官网 使用方法 在typora中选择```mermaid即可,复杂的功能需要收费版可以显示 类似于plantuml这种 功能貌

一个诡异的Python小问题

一个诡异的Python小问题 问题 来自一个基础偏弱的学员,但不知道如何去解释 >>> '' is not None :1: SyntaxWarning: "is not" with a literal. Did you mean "!="? True # 注意结果是会出现的,其实不影

React + Springboot + Quartz,从0实现Excel报表自动化

一、项目背景 企业日常工作中需要制作大量的报表,比如商品的销量、销售额、库存详情、员工打卡信息、保险报销、办公用品采购、差旅报销、项目进度等等,都需要制作统计图表以更直观地查阅。但是报表的制作往往需要耗费大量的时间,即使复用制作好的报表模版,一次次周期性对数据的复制粘贴操作也很耗人,同时模版在此过程

又一个开源便斩获 7k star 的新模型「GitHub 热点速览」

Star 并不能代表什么,但是绝对能表示一个项目的受欢迎程度。就像刚开源一周就有 7k+ star 的新模型,输入文本 / 图像就能获得 3D 对象。除了这个新模型,本周还有一款新的 Web 3D 渲染引擎 Orillusion,向量数据库新晋成员 qdrant。还有老牌魔兽世界为它站台的游戏解决方

一年一度!GitHub 开发者大会「GitHub 热点速递 v.22.45」

GitHub 是全球最大的开源社区,它的一举一动都深受每一位开源爱好者的关注。这周末刚落下帷幕的《GitHub Universe 2022》是 GitHub 发布最新产品、功能、报

Java多线程

一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程各重要知识点。掌握了上图中的各知识点,Java中的多线程也就基本上掌握了。主要包括: Java线程具有五中基本状态 新建状态(New):当线程对象对创建后,即进入了新建

Netty-架构设计及入门程序-3

一、原生 NIO 存在的问题 1、NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。2、需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor

vue3

一、简介 2020年9月18日,Vue.js发布3.0版本,代号:One Piece(海贼王) github.com/vuejs/vue-n… 1.性能的提升 打包大小减少41% 初次渲染快55%, 更新渲染快133% 内存减少54% 2.源码的升级 使用Proxy代替defineProperty实

[Linux] 安装JDK

一、将linux的jdk安装包上传到linux系统中 二、解压后放到安装路径下 tar -zxvf jdk-8u121-linux-x64.tar 三、配置JDK环境变量 1、vim /etc/profile 2、按 i 进入编辑状态 3、添加环境变量 #java environment expor

[zookeeper] 集群搭建及启动后查询服务器状态异常解决

一、集群搭建 1、每台服务器上部署zookeeper 1、将zookeeper压缩包解压到指定位置,在zookeeper解压后目录下创建数据目录zkData 2、在zkData下创建myid文件,内容写上数字,代表该zookeeper的唯一id 3、修改conf目录下的zoo_sample.cfg为

SpringCloud-Gateway搭建保姆级教程

一、网关介绍 1、什么是网关? 使⽤服务⽹关作为接⼝服务的统⼀代理,前端通过⽹关完成服务的统⼀调⽤ 2、⽹关可以⼲什么? 路由:接⼝服务的统⼀代理,实现前端对接⼝服务的统⼀访问 过滤:对⽤户请求进⾏拦截、过滤(⽤户鉴权)、监控 限流:限制⽤户的访问流量 3、常⽤的⽹关 Nginx Spring Cl