国产精品免费嫩草研究院|无遮羞动漫在线观看AV|国产麻豆精品传媒AV国产在线|村在线观看|寂寞情人1正版|韩国床震韩国床震古|精品系列专区久久

重新整理 .net core 實踐篇 ———— linux上性能排查 [外篇]

前言該文的前置篇為:
https://www.cnblogs.com/aoximin/p/16839830.html
本文介紹性能排查 。
正文上一節是出現錯誤了 , 如何去排查具體問題 。
這一節介紹一下性能排查 。
還是上文的例子作為演示:https://buggyambfiles.blob.core.windows.net/bin/buggyamb_v1.1.zip
項目地址:https://github.com/ahmetmithat/buggyamb
本文實驗的還是lldb 和 sos 。
對比一下cpu 情況 。
實驗實施條件:

重新整理 .net core 實踐篇 ———— linux上性能排查 [外篇]

文章插圖
請求前:
重新整理 .net core 實踐篇 ———— linux上性能排查 [外篇]

文章插圖
點擊請求后:
重新整理 .net core 實踐篇 ———— linux上性能排查 [外篇]

文章插圖
這樣對比還是很大的哈 。
那么我們來看下啥子情況吧 。
查看進程名:
重新整理 .net core 實踐篇 ———— linux上性能排查 [外篇]

文章插圖
那么當cpu 高的時候進行抓取 , 一般抓取兩個 , 兩個間隔10秒左右 。
為什么抓取兩個呢? 因為好對比作用 , 更好定位 , 這個多實驗實驗就清楚了 。
抓取命令:
/usr/share/dotnet/shared/Microsoft.NETCore.App/3.1.30/createdump 108232 -f /tmp/coredump.manual.1.%d/usr/share/dotnet/shared/Microsoft.NETCore.App/3.1.30/createdump 108232 -f /tmp/coredump.manual.2.%d兩個命令間隔10秒 。
我們知道這個createdump 是 dotcore runtime 自帶的 。
那么怎么知道他的位置呢?
重新整理 .net core 實踐篇 ———— linux上性能排查 [外篇]

文章插圖
這樣可以查找到位置 。
重新整理 .net core 實踐篇 ———— linux上性能排查 [外篇]

文章插圖
可以看到10秒后內存升高了 。
那么就可以上一章的內容了 , 進入lldb 。
lldb --core coredump.manual.1.108232
然后查看線程:
重新整理 .net core 實踐篇 ———— linux上性能排查 [外篇]

文章插圖
看這個線程 , 發現和其他GC mode 不一樣 。
那么就有一個東西需要科普了 , 分別是cooperative 和 preemptive 。
如果線程的 GC 模式設置為 “搶占” , 則表示 GC 可以隨時掛起此線程 。相比之下 , 協作模式意味著 GC 必須等待線程切換到搶占模式 , 然后才能掛起它 。當線程運行托管代碼時 , 它處于協作模式 。這句話什么意思呢? 就是說這個線程在占用cpu的意思 。那么cpu 高就應該看這個東西了 。
setthread 14 然后切到這個線程 。這里就不解釋了 , 都是上一章的東西 。
然后調用一下clrstack 。
重新整理 .net core 實踐篇 ———— linux上性能排查 [外篇]

文章插圖
然后來看一下干了什么?
重新整理 .net core 實踐篇 ———— linux上性能排查 [外篇]

文章插圖
感覺是在做字符串拼接啊 。
那么這個時候是會造成cpu高和內存高的 , 那么要證明自己的猜想 。
使用dso 查看一下 。
Displays all managed objects found within the bounds of the current stack.
重新整理 .net core 實踐篇 ———— linux上性能排查 [外篇]

文章插圖
看下這個string , 為什么看這個呢?因為這個string , 和System.Data.DataRow 比較近 , 這個可以學習匯編可能跟容易理解 。
重新整理 .net core 實踐篇 ———— linux上性能排查 [外篇]

文章插圖
查看了一下這個倒是有100m 。
讀取一下內存 , 看下里面是什么?
重新整理 .net core 實踐篇 ———— linux上性能排查 [外篇]

經驗總結擴展閱讀