Welcome to Galaxy Software Services Corporation !
徵才專區
CSR專區
Vital CRM 國際認證
GSS部落格
叡揚資訊
關於叡揚
新聞與活動
產品與服務
叡揚e論壇
投資人關係
EN
中
簡
日
搜尋
關於叡揚
叡揚簡介
創辦人的話
叡揚大事紀
得獎肯定
合作夥伴
營業據點
聯絡我們
新聞與活動
新聞中心
資安電子報
影音專區
成功案例
行銷活動
產品與服務
企業e化應用軟體
S.P.E.E.D. 公文線上簽核管理系統
Radar 睿達人力資源管理系統
iota C.ai 對話服務平台
Tracko 多源智慧追蹤平台
B.E.S.T. 銀行信用風險資訊解決方案
BoDms 董事會提案暨會務管理系統
Vitals ESP 企業知識協作平台
Vitals HCA 評鑑協同管理系統
Vitals HAS 醫療數據分析系統
Vitals KPIM 指標管理系統
Openfind 網擎訊息安全解決方案
資訊安全
資訊安全系列產品
Checkmarx 源碼安全檢測
Digital.ai APP & Web 防護
Digital.ai APP & Web 相容性功能驗測
illumio 零信任微切分
Orca Security 雲端原生應用程式防護平台
Azul 安全高效 Java JDK
Mend.io Open Source 檢測
HCL 網頁應用程式弱點掃描軟體
Quokka APP 黑箱檢測
Secure Code Warrior 安全開發培訓平台
資安檢測服務
資安學程
資安白皮書
資安電子報
企業數位化智慧維運
企業數位化智慧維運
Axway API 管理平台
Axway ST 集中檔案傳輸管理
AVC 應用程式弱點整合平台
BMC Control-M 批次管理解決方案
BMC Helix Discovery & AISM 探索打造企業IT智慧管理平台
Dynatrace AI智慧維運與效能管理
DMP 數據治理平台
Noname Security 完整主動式API安全平台
Servicenow ITSM一站式IT服務管理平台
TIBCO 智能化資料平台
RPA 機器人流程自動化
Automation Anywhere 業務流程自動化RPA平台
UiPath 機器人流程自動化平台
Woodpecker XVR 次世代資安可視性解決方案
資源中心
雲端與大數據服務
Vital NetZero 零碳雲
Vital CRM 客戶關係管理
Vital BizForm 雲端智慧表單
Vital Knowledge 協同知識管理
Vital Finance 財務會計管理
Vital OD 雲端公文管理
Vital HCM 雲端人力資源管理
大數據分析解決方案
運帷服務
資訊系統維運與開發服務
QuEye CIA 軟體變更衝擊分析器
AI 解決方案
AI 解決方案介紹
AI 智慧公文解決方案
AI 財務報表辨識系統
政府共同供應契約
ESG解決方案
叡揚e論壇
叡揚e論壇
產品使用真心話
投資人關係
股東專區
重大訊息
主要股東
股東會
歷年股利
股利政策
法人說明會
聯繫窗口
公開資訊觀測站
公司治理
營運團隊
公司治理
董事會
功能性委員會
誠信經營
風險管理
智慧財產管理計畫
利害關係人與溝通
公司重要內規
CSR專區
財務資訊
每月營收資訊
財務報告
EN
中
簡
日
搜尋
徵才專區
CSR專區
Vital CRM 國際認證
GSS部落格
選單
首頁
分類
標籤
選擇分類
園丁來閒聊
工具平台
專案管理
資料庫
經驗分享
測試
設計
效能調校
程式語言
|_
.NET MVC
|_
.NET
|_
Java
|_
C#
|_
Python
|_
TypeScript
|_
VB.NET
園丁
資訊安全
開發工法
作業系統
前端
搜尋
訂閱文章
取消訂閱文章
設置
登入
帳號
密碼
記住我
登入
忘記帳號
重置密碼
GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
3 分鐘閱讀時間
(658 個字)
字體大小:
+
–
訂閱
取消訂閱
透過 WinDbg 來找出 ASP.NET CPU 100% ASP.NET 程式的問題
經驗分享
.NET MVC
.NET
2018/03/20, 週二
1468 點擊
0 評論
問題
我們有一個 ASP.NET 的系統部署到 IIS 上(Windows 2012, .NET 4.x),有時候會導致 w3wp.exe 吃掉所有的 CPU 資源,一直要等到應用程式回收後,程式再重新啟動後就正常了。這種狀況不定期會發生。
解法
我們可以使用 WinDbg 來找出導致 IIS CPU 100% 的原因,方法如下,
透過「工作管理員」來「建立傾印檔案」
當發生 IIS 導致 CPU 100% 時,開啟「工作管理員」,按右鍵選取「建立傾印檔案」。要依 Web 應用程式的平台(x86/x64)來開啟「工作管理員」(x86的工作管理員在 C:\Windows\SysWOW64\taskmgr.exe )。
安裝 WinDbg
請參考
Debugging Tools for Windows (WinDbg, KD, CDB, NTSD)
來安裝對應的版本。
設定 Symbol Path
先建立一個 C:\RTX64_SYMBOLS 目錄(依您自行定義),然後開啟 Command 設定 _NT_SYMBOL_PATH 的環境變數,如下,
set _NT_SYMBOL_PATH=srv*C:\RTX64_SYMBOLS*
https://msdl.microsoft.com/download/symbols
所以在 command 中,輸入 set 後,就可以看到 _NT_SYMBOL_PATH 的設定值哦,
當然,如果常常會用到的話,就直接設定到 環境變數之前,下次 debug 時,就不用再設定一次了哦! 詳細請參考
Set up your system to use Microsoft’s public Symbol Server
在 WinDbg 中找問題
載入 sos.dll
WinDbg 有 x86/x64 的版本,我是使用 x64 的版本,所以 sos.dll 的路徑是 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos.dll,您輸入如果發生錯誤的話,請使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos.dll 。
設定 Symbol 檔目錄
!sym noisy
.cordll -ve -u -l
透過 !runaway 顯示Threads所佔的時間
輸入 !runaway 後,會顯示各 Thread 所花費的時間,花最多的會在最上面,如下圖,
!runaway
透過 ~[thread]s 切換到該 thread 的位置
由上圖所示,Thread 40 佔最多時間,所以我們切到它的位罝去,
~40s
透過 !clrstack 來查看呼叫堆疉
!clrstack
從上圖可以發現,應該是有關 Dictionary 操作的問題,而它是由我們系統中 TemplateCfg.initial() 這個 Method 所引起的。
檢視並調整程式碼
開啟 TemplateCfg 程式碼,在 initial 這個 Method 之中會建立 Dictionary 物件,Clear 它,並 Insert 資料,但這些 Dictionary 的變數卻又設定成 static 。
即然這些 Dictionary 是 static 的,而且它們值又都是相同的,就沒有必要每次 request 時,就重新建立並 insert 這些資料。
所以將 initial 裡面的 Code 搬到 static constructor 。
調整完程式碼後,從去年觀察到目前,已經沒有再發生 CPU 100% 的狀況。
參考資料
Debugging in Production Part 1 - Analyzing 100% CPU Usage Using Windbg
WinDBG 應用實例:找出 ASP.NET CPU 100% 原因
Debugging Tools for Windows (WinDbg, KD, CDB, NTSD)
Set up your system to use Microsoft’s public Symbol Server
High CPU Hangs - 05
中小型研发团队架构实践:生产环境诊断利器WinDbg帮你快速分析异常情况Dump文件
Intro to WinDBG for .NET Developers
.NET Debugging Demos Lab 4: High CPU Hang – Review
你覺得這篇文章怎麽樣?
開心
(
0
)
喜愛
(
0
)
驚奇
(
0
)
悲傷
(
0
)
生氣
(
0
)
標籤:
100%
asp.net
cpu
IIS
Windbg
亂馬客
OWASP ZAP 憑證安裝的方式(OWASP ZAP Certificate)
如何在.Net專案中開始使用TypeScript
相關文章
使用 Docker for Windows 來運行 ASP.NET WebForms
工具平台
Hosting node.js express app in IIS
前端
在Window IIS上跑NodeJs
工具平台
ASP.NET之FormsAuthentication表單驗證類型轉換
.NET
線上客服 + Chatbot = 智慧客服
經驗分享
分享 Call Language Understanding (LUIS) predictions api 的 3 種方式
.NET
評論
尚無評論
已經注冊了?
這裡登入
Guest
2024/04/27, 週六
Captcha 圖像
提交您的評論