上一页 1 2 3 4 5 6 7 8 9 ··· 46 下一页
摘要: 一:背景 1. 讲故事 最近时间相对比较宽裕,多写点文章来充实社区吧,这篇文章主要还是来自于最近遇到的几例线程饥饿(Task.Result)引发的一系列的反思和总结,我觉得.NET8容易引发饥饿的原因,更多的在于异步回调之后底层会反复的将结果丢到线程池所致,因为数据进线程池容易,再用线程到池中去捞就 阅读全文
posted @ 2025-01-07 14:41 一线码农 阅读(2540) 评论(15) 推荐(7)
摘要: 一:背景 1. 讲故事 前段时间训练营里的一位朋友提了一个问题,我用ReadAsync做文件异步读取时,我知道在Win32层面会传 lpOverlapped 到内核层,那在内核层回头时,它是如何通过这个 lpOverlapped 寻找到 ReadAsync 这个异步的Task的呢? 这是一个好问题, 阅读全文
posted @ 2025-01-06 11:38 一线码农 阅读(623) 评论(2) 推荐(4)
摘要: 一:背景 1. 讲故事 上个月在社区写的文章比较少,一直关注的朋友应该知道那段时间被狗咬了以及一些琐事处理,所以手头上也攒了不少需要分享的案例,这段时间比较空闲,逐个给大 家做个分享吧,刚好年后为新版的 .NET高级调试训练营 做案例储备,所以抓紧时间疯狂输出吧! 这次生产事故的dump是训练营里一 阅读全文
posted @ 2024-12-31 11:15 一线码农 阅读(1821) 评论(13) 推荐(18)
摘要: 一:背景 1. 讲故事 准备明年把.NET高级调试的训练营的课程进行重构,采用案例引导式,而CPU爆高类有不少是程序员在写代码的时候不注意时间复杂度,在数据量稍微大一点的情况直接幻化成了死循环,时间复杂度这东西是学校的数据结构课程,有心的朋友在写多层循环的时候脑子里面一定要过一遍,今天就给大家带一篇 阅读全文
posted @ 2024-12-30 11:46 一线码农 阅读(2171) 评论(12) 推荐(8)
摘要: 一:背景 1. 讲故事 前两天给训练营里的一位学员分析了一个dump,学员因为弄了一整天也没找到祸根,被我一下子弄出来了,极度想看看我是怎么分析的?由于在微信上不能一言两语表尽,干脆写一篇文章出来详细的讲讲吧,哈哈,训练营里的学员得有求必应哈。。。话不多说,我们一起探索下这个程序的崩溃之路吧。 二: 阅读全文
posted @ 2024-12-27 11:54 一线码农 阅读(1586) 评论(0) 推荐(13)
摘要: 一:背景 1. 讲故事 前面二篇我们聊到了 Thread.Sleep 和 Task.Result 场景下的线程注入逻辑,在线程饥饿的情况下注入速度都不是很理想,那怎么办呢?有没有更快的注入速度,这篇作为 动态注入 的终结篇,我个人总结如下两种方法,当然可能有更多的路子,知道的朋友可以在下面留言。 二 阅读全文
posted @ 2024-12-25 13:32 一线码农 阅读(1303) 评论(5) 推荐(7)
摘要: 一:背景 1. 讲故事 上一篇我们用 Thread.Sleep 的方式演示了线程池饥饿场景下的动态线程注入,可以观察到大概 1s 产生 1~2 个新线程,很显然这样的增长速度扛不住上游请求对线程池的DDOS攻击,导致线程池队列越来越大,但C#团队这么优秀,能优化的地方绝对会给大家尽可能的优化,比如这 阅读全文
posted @ 2024-12-24 13:31 一线码农 阅读(715) 评论(1) 推荐(9)
摘要: 一:背景 1. 讲故事 在线程饥饿的场景中,我们首先要了解的就是线程是如何动态注入的?其实现如今的ThreadPool内部的实现逻辑非常复杂,而且随着版本的迭代内部逻辑也在不断的变化,有时候也没必要详细的去了解,只需在稍微宏观的角度去理解一下即可,我准备用三篇来详细的聊一聊线程注入的流程走向来作为线 阅读全文
posted @ 2024-12-23 13:30 一线码农 阅读(846) 评论(2) 推荐(8)
摘要: 一:背景 1. 讲故事 这篇文章起源于我的 C#内功修炼训练营里的一位朋友提的问题:后台线程的内部是如何运转的 ? ,犹记得C# Via CLR这本书中 Jeffery 就聊到了他曾经给别人解决一个程序无法退出的bug,最后发现是有一个 Backgrond=false 的线程导致的。恰巧在我分析的3 阅读全文
posted @ 2024-12-22 13:08 一线码农 阅读(1505) 评论(7) 推荐(8)
摘要: 一:背景 1. 讲故事 为什么说这东西比较坑人呢?是因为最近一个月接到了两个dump,都反应程序卡死无响应,最后分析下来是因为线程饥饿导致,那什么原因导致的线程饥饿呢?进一步分析发现罪魁祸首是 MySql.Data,这就让人无语了,并且反馈都是升级了MySql.Data驱动引发,接下来我们简单聊一下 阅读全文
posted @ 2024-12-20 12:29 一线码农 阅读(2877) 评论(29) 推荐(24)
摘要: 一:背景 1. 讲故事 前些天训练营里的一位学员找到我,说他们的差旅后台系统出现了CPU爆高的情况,爆高之后就下不去了,自己分析了下也没找到原因,事情比较紧急,让我帮忙看下是什么回事,手里也有dump,丢过我之后我们上 windbg 分析吧。 二:WinDbg分析 1. 为什么会CPU爆高 看过这个 阅读全文
posted @ 2024-12-11 11:55 一线码农 阅读(2249) 评论(13) 推荐(12)
摘要: 一:背景 1. 讲故事 停了一个月时间没有更新博客了,主要是这段时间有些许事情导致心神不宁,我这个人也比较浮躁所以无法潜心修炼,事情如下: 被狗咬了 也不知道是不是出门没看黄历,在小区门口店里买烟,被店老板家狗来了个猝不及防,天降横祸。让店老板赔了个疫苗钱,人生第一次被狗咬,第一次打这种狂犬疫苗,头 阅读全文
posted @ 2024-11-29 09:14 一线码农 阅读(2085) 评论(8) 推荐(21)
摘要: 一:背景 1. 讲故事 上一篇我们聊过AOT编程中可能会遇到的三大件问题,而这三大件问题又是考验你对AOT中节点图的理解,它是一切的原点,接下来我就画几张图以个人的角度来解读下吧,不一定对。 二:理解节点依赖图 1. 对节点的理解 按照官方的说法,构建依赖节点和GC的标记算法一样,都是采用深度优先, 阅读全文
posted @ 2024-10-24 10:43 一线码农 阅读(700) 评论(2) 推荐(3)
摘要: 一:背景 1. 讲故事 在 .NET AOT 编程中,难免会在 泛型,序列化,以及反射的问题上纠结和反复纠错尝试,这篇我们就来好好聊一聊相关的处理方案。 二:常见问题解决 1. 泛型问题 研究过泛型的朋友应该都知道,从开放类型上产下来的封闭类型往往会有单独的 MethodTable,并共用 EECl 阅读全文
posted @ 2024-10-23 13:00 一线码农 阅读(2487) 评论(4) 推荐(8)
摘要: 一:背景 1. 讲故事 上篇聊到了 C#程序编译成Native代码 的宏观过程,有粉丝朋友提了一个问题,能不能在 dotnet publish 发布的过程中对AOT编译器拦截进行源码级调试,这是一个好问题,也是深度研究的必经之路,这篇我们就来分享下吧。 二:托管和非托管调试器 1. 调试器介绍 相信 阅读全文
posted @ 2024-10-16 16:48 一线码农 阅读(689) 评论(1) 推荐(4)
上一页 1 2 3 4 5 6 7 8 9 ··· 46 下一页