记一次asp.net core 线上崩溃解决总结

Posted chenzhe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次asp.net core 线上崩溃解决总结相关的知识,希望对你有一定的参考价值。

1.首先要先准备好环境,安装lldb 工具 要安装3.9版本的,因为每个版本对应dnc版本不一样,3.9的支持2.2 版本,然后确定分析的机器里dnc 版本和线上的生产环境是否一致,自己安装比较费劲,可以使用一些已经安装好的docker镜像来进行分析更简单一点

2.在生产环境生成dump文件可以使用procdump 工具或者直接使用dotnet 自带的工具
/usr/share/dotnet/shared/Microsoft.NETCore.App/2.1.1/createdump 9364(线程id)

 

3.首先使用linux 命令查询占用cpu高的线程
top -H 命令查询

技术图片

 

 


4.在本地开始分析
1>lldb 加载文件
lldb dotnet
-c /opt/dump\\_file/mvcdumpmindump
-o "plugin load /usr/share/dotnet/shared/Microsoft.NETCore.App/2.1.1/libsosplugin.so"
2>设置dotent core 运行环境 setclrpath /usr/share/dotnet/shared/Microsoft.NETCore.App/2.1.1/命令

3>clrthreads -live 列出所有线程
4>thread select 11(线程编号)
5>clrstack -p 查看代码堆栈信息

最后定位到了一段代码,其中有while循环,代码如下:

技术图片

 

 

这一段代码猛一看好像没有问题,也会出现死循环的情况,那么情况是怎么产生的呢?经过和同事一起慢慢的重现出来了,因为有重复新闻id的产生造成了死循环,最终代码修好后问题解决!!

以上是关于记一次asp.net core 线上崩溃解决总结的主要内容,如果未能解决你的问题,请参考以下文章

记一次线上FGC问题排查

记一次 android 线上 oom 问题

记一次Chrome浏览器打开任何页面都显示“喔唷 崩溃啦”的解决过程!

记一次线上FGC问题排查

记一次线上商城系统 TomcatJVM 高并发的优化

记一次Java Core Dump分析过程