ASP.NET 2.0  安全機制與偵錯 ( 下集 ) 曹祖聖 台灣微軟資深講師 [email_address] http://teacher.allok.com.tw MCP, MCP+I, MCSA, MCSE, MCDBA, MCAD, ...
講師簡介 <ul><li>姓名:曹祖聖  Jimy Cao </li></ul><ul><li>郵件: [email_address] </li></ul><ul><li>網站: http://teacher.allok.com.tw </li...
講師簡介 <ul><li>經歷: </li></ul><ul><ul><li>華彩教育訓練中心、資策會教育訓練中心講師 </li></ul></ul><ul><ul><li>巨匠電腦認證中心兼任講師、專任講師、顧問講師 </li></ul></...
大綱 <ul><li>即行時期系統監控  - ASP.NET  效能計數器 </li></ul><ul><li>ASP.NET  事件追蹤 </li></ul><ul><li>ASP.NET  追蹤功能 </li></ul><ul><li>遠端...
執行時期監控 優點  ? <ul><li>監控應用程式狀態變化 </li></ul><ul><ul><li>監控不正常應用程式、進行進一步分析 </li></ul></ul><ul><li>診斷、分析出問題根源 </li></ul><ul><l...
效能計數器 <ul><li>不需做啟動,直接可以收集相關數據 </li></ul><ul><li>第一線的監控數據 </li></ul><ul><li>做為觸發進一步分析的條件 </li></ul><ul><li>ASP.NET 2.0  支援...
使用  ASP.NET 2.0  效能計數器
大綱 <ul><li>即行時期系統監控  - ASP.NET  效能計數器 </li></ul><ul><li>ASP.NET  事件追蹤 </li></ul><ul><li>ASP.NET  追蹤功能 </li></ul><ul><li>遠端...
Windows  事件追蹤 <ul><li>Windows  平台上全功能的追蹤功能 </li></ul><ul><ul><li>Windows 2000  之後的作業系統 </li></ul></ul><ul><ul><li>包含非常多與作業...
Windows  事件追蹤 追蹤元件 事件提供者   C 事件提供者   B 事件提供者  A 事件記錄檔 事件控制 … Consumer 即時事件 已記錄事件 Session 1 暫存區 Session 2 Session 64 追蹤的  S...
事件看起來像  ? <ul><li>所有事件除了標準  Windows  事件有的標頭資訊之外,還外加了其它的事件詳細訊息 </li></ul><ul><li>IIS  與  ASP.NET  負責附加這些資訊 </li></ul>4 Byte...
Windows  事件追蹤 使用追蹤 <ul><li>控制追蹤 </li></ul><ul><ul><li>Logman.exe:  命令列工具 </li></ul></ul><ul><ul><li>效能記錄及警示 </li></ul></ul...
ASP.NET  追蹤事件 <ul><li>用戶端要求事件 </li></ul><ul><ul><li>要求開始 </li></ul></ul><ul><ul><li>加入佇列與從佇列移除 </li></ul></ul><ul><ul><li>...
記錄追蹤狀態 <ul><li>使用  logman.exe  或  perfmon.exe </li></ul><ul><ul><li>logman create trace ASPNET –o &quot;mylog&quot; </li><...
檢視追蹤資料 <ul><li>logman stop trace ASPNET </li></ul><ul><li>tracerpt mylog_000001.etl </li></ul><ul><li>事件總結資訊在  summary.txt...
Windows  事件追蹤
大綱 <ul><li>即行時期系統監控  - ASP.NET  效能計數器 </li></ul><ul><li>ASP.NET  事件追蹤 </li></ul><ul><li>ASP.NET  追蹤功能 </li></ul><ul><li>遠端...
執行時期輸出偵錯資訊 <ul><li>在執行時期 : </li></ul><ul><ul><li>輸出變數的值 </li></ul></ul><ul><ul><li>檢查某些條件是否成立 </li></ul></ul><ul><ul><li>追...
啟動  ASP.NET  追蹤 <ul><li>針對某一頁  ASP.NET  進行追蹤 </li></ul><ul><li>在  Web.config  中設定針對所有應用程式進行追蹤 </li></ul><trace enabled=&qu...
使用  Trace  物件 <ul><li>輸出追蹤訊息 </li></ul><ul><li>檢查追蹤是否已啟動 : Trace.IsEnabled </li></ul><ul><li>動態啟動 / 停用追蹤 </li></ul>Trace.W...
直接在頁面中檢視追蹤結果
使用應用程式層級追蹤 <ul><li>設定  pageOutput  屬性來決定是不是要將追蹤結果直接顯示在頁面上 </li></ul>http://server/project/trace.axd 頁面 Trace=True Trace=Fa...
使用  ASP.NET Trace  功能
元件追蹤 <ul><li>引用  System.Web.dll  與  System.Web  空間 </li></ul><ul><li>啟動追蹤 </li></ul><ul><li>呼叫  Trace  物件的方法 </li></ul>Htt...
元件追蹤
大綱 <ul><li>即行時期系統監控  - ASP.NET  效能計數器 </li></ul><ul><li>ASP.NET  事件追蹤 </li></ul><ul><li>ASP.NET  追蹤功能 </li></ul><ul><li>遠端...
.NET  應用程式執行流程  ( 一 ) + 組件  (Assembly 、 IL) Metadata Resources Intermediate Language Compiler ( 中間碼編譯器 ) Just-In-Time Comp...
.NET  應用程式執行流程  ( 二 ) Native Code Manager ( 程式管理員 ) 執行 Garbage Collection ( 垃圾收集 ) Exception Manager ( 例外管理員 ) Thread Supp...
ASP.NET  遠端偵錯 <ul><li>遠端偵錯 : </li></ul><ul><ul><li>有錯誤立即進行偵錯,簡化偵錯流程 </li></ul></ul><ul><ul><li>保留完整的 “犯罪現場” </li></ul></ul...
ASP.NET  遠端偵錯
大綱 <ul><li>即行時期系統監控  - ASP.NET  效能計數器 </li></ul><ul><li>ASP.NET  事件追蹤 </li></ul><ul><li>ASP.NET  追蹤功能 </li></ul><ul><li>遠端...
ASP .NET  處理模型 IIS 5.0 TCP/IP WinSock 2.0 inetinfo.exe aspnet_isapi.dll Metabase FTP, SMTP, NNTP aspnet_wp.exe User Mode K...
ASP .NET  執行時期  Attributes <ul><li>透過  Attributes  可以設定  ASP .NET 在執行時期的行為 </li></ul><ul><ul><li>設定在  <httpRuntime>   元素中 ...
Health Monitoring <ul><li>在  machine.config   中的  <processModel>   元素中設定  enable   這個  Attribute </li></ul><ul><li>IIS  每 ...
Health Monitoring <ul><li>當工作行程的記憶體超過指定比例 </li></ul><ul><ul><li>IIS  會暫停該工作行程所負責處理的所有要求 </li></ul></ul><ul><ul><li>將這些  re...
ASP .NET  處理模型 IIS 6.0 TCP/IP HTTP.SYS inetinfo.exe Metabase FTP, SMTP, NNTP w3wp.exe User Mode Kernel Mode Request Respon...
IIS 6.0  處理模型 <ul><li>穩定性提昇 </li></ul><ul><ul><li>啟動工作行程 Isolation Mode </li></ul></ul><ul><ul><li>aspnet_isapi.dll  會載入工作...
Orphaning Failed  工作行程 <ul><li>Web Administration Service (WAS) </li></ul><ul><ul><li>與  inetinfo.exe  進行銜接 </li></ul></ul...
偵錯記憶體相關問題 <ul><li>.NET  記憶體管理與垃圾收集機制 </li></ul><ul><ul><li>連續記憶體空間處理 </li></ul></ul><ul><ul><li>記憶體  Generations </li></ul...
垃圾收集機制 <ul><li>為了避免使用  linked list  來搜尋記憶體空間, Garbage Collection (GC)  會進行必要的記憶體搬移,以確保  Heap  記憶空間連續 </li></ul>Garbage Col...
記憶體  Generations <ul><li>根據記憶體的 “年齡”, GC  將記憶體分成  0, 1, 2  三個  generations </li></ul><ul><ul><li>每當開始回收某一  generation  記憶體...
Large Object Heap <ul><li>.NET Heap  分為下列兩部份 </li></ul><ul><ul><li>Main Managed Heap </li></ul></ul><ul><ul><ul><li>使用樹狀結構...
應用程式集區設定
大綱 <ul><li>即行時期系統監控  - ASP.NET  效能計數器 </li></ul><ul><li>ASP.NET  事件追蹤 </li></ul><ul><li>ASP.NET  追蹤功能 </li></ul><ul><li>遠端...
總結 <ul><li>在不影響系統執行效能前提下 </li></ul><ul><ul><li>使用  ASP.NET  效能計數器 </li></ul></ul><ul><ul><li>ASP.NET  事件追蹤 </li></ul></ul>...
© 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft ma...
Upcoming SlideShare
Loading in...5
×

Asp .Net 2.0 安全機制 Ii

923

Published on

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
923
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Demo: diagnose a performance problem using perf counters We’ll start with an application under load that over allocates and show high allocation rates, % time in GC, and low RPS We’ll refine the app and reevaluate perf data, making incremental improvements that show improvements in key metrics
  • Walkthrough defining and starting a trace session Make a couple of requests and stop trace session Walk through consuming trace session and walk through request flow and timings
  • Walkthrough defining and starting a trace session Make a couple of requests and stop trace session Walk through consuming trace session and walk through request flow and timings
  • Walkthrough defining and starting a trace session Make a couple of requests and stop trace session Walk through consuming trace session and walk through request flow and timings
  • Write a reusable component that uses System.Diagnostics.Trace Show how that component works in a console application Configure the ASP.NET trace listener Use component in a web application and show how output goes to multiple listeners (e.g. ASP.NET page output and debug viewer)
  • Write a reusable component that uses System.Diagnostics.Trace Show how that component works in a console application Configure the ASP.NET trace listener Use component in a web application and show how output goes to multiple listeners (e.g. ASP.NET page output and debug viewer)
  • © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. 09/01/09 15:24
  • Asp .Net 2.0 安全機制 Ii

    1. 1. ASP.NET 2.0 安全機制與偵錯 ( 下集 ) 曹祖聖 台灣微軟資深講師 [email_address] http://teacher.allok.com.tw MCP, MCP+I, MCSA, MCSE, MCDBA, MCAD, MCSD, MCT, MVP
    2. 2. 講師簡介 <ul><li>姓名:曹祖聖 Jimy Cao </li></ul><ul><li>郵件: [email_address] </li></ul><ul><li>網站: http://teacher.allok.com.tw </li></ul><ul><li>證照: MCP, MCP+I, MCSA, MCSE, MCDBA,     MCAD, MCSD, MCT, MVP </li></ul><ul><li>現任: </li></ul><ul><ul><li>台灣微軟資深講師 </li></ul></ul><ul><ul><li>巨匠電腦講師 </li></ul></ul><ul><ul><li>聖擎科技股份有限公司技術長 </li></ul></ul><ul><ul><li>光明頂軟體股份有限公司研發顧問 </li></ul></ul><ul><ul><li>行動智慧股份有限公司技術顧問 </li></ul></ul><ul><ul><li>專業電腦圖書、雜誌專欄作家 </li></ul></ul>
    3. 3. 講師簡介 <ul><li>經歷: </li></ul><ul><ul><li>華彩教育訓練中心、資策會教育訓練中心講師 </li></ul></ul><ul><ul><li>巨匠電腦認證中心兼任講師、專任講師、顧問講師 </li></ul></ul><ul><ul><li>微軟 TechEd 2000 、 2001 、 2002 、 2003 、 2004 、 2005 研討會講師 (11 場 ) </li></ul></ul><ul><ul><li>微軟 TechNet 研討會講師 (30 場 ) </li></ul></ul><ul><ul><li>微軟 PDC 2002 研討會講師 (2 場 ) </li></ul></ul><ul><ul><li>微軟 MSDN DevCon 專業 .NET 開發技術研討會講師 (8 場 ) </li></ul></ul><ul><ul><li>微軟 MSDN 研討會 (20 場 ) </li></ul></ul><ul><ul><li>微軟 Visual Studio .NET 、 Windows Server 2003 、 Office 2003 、 Visual Studio 2005 、 SQL 2005 中文版上市發表會講師 </li></ul></ul><ul><ul><li>微軟 ISV Training 、 Smart Client ISV Training 、 Imagine Cup 講師 </li></ul></ul><ul><ul><li>Windows XP Service Pack 應用程式相容性研討會講師 (16 場 ) </li></ul></ul><ul><ul><li>第一屆認證博覽會講師、巨匠精英展望會講師 ( 全省巡迴 3 場 ) </li></ul></ul><ul><ul><li>東海、成功、淡江 … 等大專院校資訊技能生涯規劃講座講師 </li></ul></ul><ul><ul><li>大台中人力銀行特約講師、環台聯合企業有限公司網路行銷顧問 </li></ul></ul><ul><ul><li>凌天科技有限公司技術顧問 </li></ul></ul>
    4. 4. 大綱 <ul><li>即行時期系統監控 - ASP.NET 效能計數器 </li></ul><ul><li>ASP.NET 事件追蹤 </li></ul><ul><li>ASP.NET 追蹤功能 </li></ul><ul><li>遠端偵錯 ASP.NET 應用程式 </li></ul><ul><li>健康監控 - 應用程式集區設定 </li></ul>
    5. 5. 執行時期監控 優點 ? <ul><li>監控應用程式狀態變化 </li></ul><ul><ul><li>監控不正常應用程式、進行進一步分析 </li></ul></ul><ul><li>診斷、分析出問題根源 </li></ul><ul><li>應用程式修正後 </li></ul><ul><ul><li>確保問題已經解決 </li></ul></ul><ul><li>效能調校 </li></ul><ul><li>容量分析 </li></ul>
    6. 6. 效能計數器 <ul><li>不需做啟動,直接可以收集相關數據 </li></ul><ul><li>第一線的監控數據 </li></ul><ul><li>做為觸發進一步分析的條件 </li></ul><ul><li>ASP.NET 2.0 支援非常完整的計數器 </li></ul><ul><li>計數器物件,例如 : </li></ul><ul><ul><li>ASP.NET </li></ul></ul><ul><ul><li>ASP.NET Applications </li></ul></ul><ul><ul><li>.NET CLR Memory </li></ul></ul><ul><ul><li>.NET CLR Exceptions </li></ul></ul>
    7. 7. 使用 ASP.NET 2.0 效能計數器
    8. 8. 大綱 <ul><li>即行時期系統監控 - ASP.NET 效能計數器 </li></ul><ul><li>ASP.NET 事件追蹤 </li></ul><ul><li>ASP.NET 追蹤功能 </li></ul><ul><li>遠端偵錯 ASP.NET 應用程式 </li></ul><ul><li>健康監控 - 應用程式集區設定 </li></ul>
    9. 9. Windows 事件追蹤 <ul><li>Windows 平台上全功能的追蹤功能 </li></ul><ul><ul><li>Windows 2000 之後的作業系統 </li></ul></ul><ul><ul><li>包含非常多與作業系統相關的元件 </li></ul></ul><ul><ul><li>用途 : 偵錯、診斷、容量規劃 </li></ul></ul><ul><li>追蹤效能高、低負載、高擴展性 </li></ul><ul><ul><li>持續事件追蹤 ( 20K/sec) </li></ul></ul><ul><ul><li><= 5% CPU 負載 (PIII 500) </li></ul></ul><ul><ul><li>核心模式暫存區與記錄 </li></ul></ul><ul><li>動態組態設定 </li></ul><ul><ul><li>不需要重新開機 </li></ul></ul><ul><li>支援 ASP.NET </li></ul><ul><ul><li>在 V1.1 版只支援少數事件 ( 要求開始 / 結束 ) </li></ul></ul><ul><ul><li>在 V2.0 版中支援完整的 HTTP 與 Page 事件 </li></ul></ul>
    10. 10. Windows 事件追蹤 追蹤元件 事件提供者 C 事件提供者 B 事件提供者 A 事件記錄檔 事件控制 … Consumer 即時事件 已記錄事件 Session 1 暫存區 Session 2 Session 64 追蹤的 Session 事件 事件 啟動 / 停用 Session 控制 事件處理
    11. 11. 事件看起來像 ? <ul><li>所有事件除了標準 Windows 事件有的標頭資訊之外,還外加了其它的事件詳細訊息 </li></ul><ul><li>IIS 與 ASP.NET 負責附加這些資訊 </li></ul>4 Bytes ULONG Kernel mode CPU Time (Ticks) KernelTime 4 Bytes ULONG User mode CPU Time (Ticks) UserTime 4 Bytes Handle Thread responsible for event ThreadId 4 Bytes Handle Process responsible for event ProcessId 8 Bytes Quad Integer Wall Clock Type (100 ns) TimeStamp 1 Byte UCHAR Event Level Level 1 Byte UCHAR Event Type Type 2 Bytes USHORT Version of record Version 16 Bytes GUID Globally unique identifier GUID 4 Bytes ULONG Event record size Size
    12. 12. Windows 事件追蹤 使用追蹤 <ul><li>控制追蹤 </li></ul><ul><ul><li>Logman.exe: 命令列工具 </li></ul></ul><ul><ul><li>效能記錄及警示 </li></ul></ul><ul><ul><li>直接呼叫 Windows APIs </li></ul></ul><ul><li>檢示追蹤 </li></ul><ul><ul><li>Tracerpt.exe: *.etl 檔處理工具 </li></ul></ul><ul><ul><li>將追蹤資訊儲存成 CSV 格式 </li></ul></ul><ul><ul><li>產生 ASP.NET 負載報表 </li></ul></ul><ul><ul><li>Excel </li></ul></ul>
    13. 13. ASP.NET 追蹤事件 <ul><li>用戶端要求事件 </li></ul><ul><ul><li>要求開始 </li></ul></ul><ul><ul><li>加入佇列與從佇列移除 </li></ul></ul><ul><ul><li>進入 / 離開應用程式 </li></ul></ul><ul><ul><li>進入 / 離開模組 </li></ul></ul><ul><ul><li>進入 / 離開 Handlers </li></ul></ul><ul><ul><li>Page Lifecycle 事件 </li></ul></ul><ul><ul><ul><li>Viewstate 維護、網頁 rendering, … </li></ul></ul></ul><ul><ul><li>應用程式服務事件 </li></ul></ul><ul><ul><ul><li>Session state, Role Manager, Personalization </li></ul></ul></ul><ul><ul><li>要求結束 </li></ul></ul><ul><li>與 IIS 6 和 HTTP.SYS 相關的事件 </li></ul>
    14. 14. 記錄追蹤狀態 <ul><li>使用 logman.exe 或 perfmon.exe </li></ul><ul><ul><li>logman create trace ASPNET –o &quot;mylog&quot; </li></ul></ul><ul><ul><li>logman update trace ASPNET –pf events.txt </li></ul></ul><ul><ul><ul><li>events.txt: 記錄提供者名稱的文字檔,例如 : </li></ul></ul></ul><ul><ul><ul><ul><li>&quot;ASP.NET Events&quot; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>&quot;IIS: WWW Server&quot; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>&quot;HTTP Service Trace&quot; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>&quot;IIS: WWW Isapi Extension&quot; </li></ul></ul></ul></ul><ul><ul><li>logman start ASPNET </li></ul></ul><ul><li>可以使用 perfmon.exe 進行排程 </li></ul>
    15. 15. 檢視追蹤資料 <ul><li>logman stop trace ASPNET </li></ul><ul><li>tracerpt mylog_000001.etl </li></ul><ul><li>事件總結資訊在 summary.txt </li></ul><ul><li>每一個事件的內容與時間在 dumpfile.csv </li></ul>
    16. 16. Windows 事件追蹤
    17. 17. 大綱 <ul><li>即行時期系統監控 - ASP.NET 效能計數器 </li></ul><ul><li>ASP.NET 事件追蹤 </li></ul><ul><li>ASP.NET 追蹤功能 </li></ul><ul><li>遠端偵錯 ASP.NET 應用程式 </li></ul><ul><li>健康監控 - 應用程式集區設定 </li></ul>
    18. 18. 執行時期輸出偵錯資訊 <ul><li>在執行時期 : </li></ul><ul><ul><li>輸出變數的值 </li></ul></ul><ul><ul><li>檢查某些條件是否成立 </li></ul></ul><ul><ul><li>追蹤應用程式執行路徑 </li></ul></ul><ul><li>可以使用的物件 : </li></ul><ul><ul><li>Trace </li></ul></ul><ul><ul><li>Debug </li></ul></ul>
    19. 19. 啟動 ASP.NET 追蹤 <ul><li>針對某一頁 ASP.NET 進行追蹤 </li></ul><ul><li>在 Web.config 中設定針對所有應用程式進行追蹤 </li></ul><trace enabled=&quot;true&quot; pageOutput=&quot;true“ localOnly=&quot;true&quot;/> <%@ Page Language=&quot;vb&quot; Trace=&quot;true&quot; %> <%@ Page Language=&quot;c#&quot; Trace=&quot;true&quot; %>
    20. 20. 使用 Trace 物件 <ul><li>輸出追蹤訊息 </li></ul><ul><li>檢查追蹤是否已啟動 : Trace.IsEnabled </li></ul><ul><li>動態啟動 / 停用追蹤 </li></ul>Trace.Write (&quot; category &quot;, &quot; message &quot;) Trace.Warn (&quot; category &quot;, &quot; message &quot;) If Trace.IsEnabled Then strMsg = &quot;Tracing is enabled!&quot; Trace.Write(&quot;myTrace&quot;, strMsg) End If Trace.IsEnabled = False
    21. 21. 直接在頁面中檢視追蹤結果
    22. 22. 使用應用程式層級追蹤 <ul><li>設定 pageOutput 屬性來決定是不是要將追蹤結果直接顯示在頁面上 </li></ul>http://server/project/trace.axd 頁面 Trace=True Trace=False - 應用程式 - - Trace=True 結果 <ul><li>顯示追蹤結果 </li></ul><ul><li>不顯示追蹤結果 </li></ul><ul><li>顯示追蹤結果 </li></ul>
    23. 23. 使用 ASP.NET Trace 功能
    24. 24. 元件追蹤 <ul><li>引用 System.Web.dll 與 System.Web 空間 </li></ul><ul><li>啟動追蹤 </li></ul><ul><li>呼叫 Trace 物件的方法 </li></ul>HttpContext.Current.Trace.IsEnabled = True Imports System.Web HttpContext.Current.Trace.Write _ (“ 類別名稱” , “ 訊息 &quot;)
    25. 25. 元件追蹤
    26. 26. 大綱 <ul><li>即行時期系統監控 - ASP.NET 效能計數器 </li></ul><ul><li>ASP.NET 事件追蹤 </li></ul><ul><li>ASP.NET 追蹤功能 </li></ul><ul><li>遠端偵錯 ASP.NET 應用程式 </li></ul><ul><li>健康監控 - 應用程式集區設定 </li></ul>
    27. 27. .NET 應用程式執行流程 ( 一 ) + 組件 (Assembly 、 IL) Metadata Resources Intermediate Language Compiler ( 中間碼編譯器 ) Just-In-Time Compiler ( 即時編譯器 ) Class Library ( 類別程式庫 ) + + Assembly Loader ( 組件載入器 ) Class Loader ( 類別載入器 ) Security ( 安全性檢查 ) Policy <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?> <configuration> <mscorlib> <security> <policy> <PolicyLevel version=&quot;1&quot;> <CodeGroup class=&quot;UnionCodeGroup&quot; version=&quot;1&quot; PermissionSetName=&quot;Nothing&quot; Name=&quot;All_Code&quot; Description=&quot;Code group grants no permissio ns and forms the root of the code group tree.&quot;> <IMembershipCondition clas s=&quot;AllMembershipCondition&quot; version=&quot;1&quot;/> <CodeGroup class=&quot;UnionCodeGroup&quot; version=&quot;1&quot; PermissionSetName=&quot;FullTrust&quot; Policy <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?> <configuration> <mscorlib> <security> <policy> <PolicyLevel version=&quot;1&quot;> <CodeGroup class=&quot;UnionCodeGroup&quot; version=&quot;1&quot; PermissionSetName=&quot;Nothing&quot; Name=&quot;All_Code&quot; Description=&quot;Code group grants no permissio ns and forms the root of the code group tree.&quot;> <IMembershipCondition clas s=&quot;AllMembershipCondition&quot; version=&quot;1&quot;/> <CodeGroup class=&quot;UnionCodeGroup&quot; version=&quot;1&quot; PermissionSetName=&quot;FullTrust&quot; public static void Main(String[] args ) { String usr; FileStream f; StreamWriter w; try { usr=Environment.GetEnvironmentVariable(&quot;USERNAME&quot;); f=new FileStream(“C:est.txt&quot;,FileMode.Create); w=new StreamWriter(f); w.WriteLine(usr); w.Close(); } catch (Exception e){ Console.WriteLine(&quot;Exception:&quot;+e.ToString()); } } 程式原始碼 + 機器碼 (Native Code)
    28. 28. .NET 應用程式執行流程 ( 二 ) Native Code Manager ( 程式管理員 ) 執行 Garbage Collection ( 垃圾收集 ) Exception Manager ( 例外管理員 ) Thread Support ( 執行緒支援 ) COM Interop (COM 元件整合 ) Debug Engine ( 偵錯引擎 ) Native Code Cache ( 機器碼快取 ) Security ( 安全性檢查 ) Policy <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?> <configuration> <mscorlib> <security> <policy> <PolicyLevel version=&quot;1&quot;> <CodeGroup class=&quot;UnionCodeGroup&quot; version=&quot;1&quot; PermissionSetName=&quot;Nothing&quot; Name=&quot;All_Code&quot; Description=&quot;Code group grants no permissio ns and forms the root of the code group tree.&quot;> <IMembershipCondition clas s=&quot;AllMembershipCondition&quot; version=&quot;1&quot;/> <CodeGroup class=&quot;UnionCodeGroup&quot; version=&quot;1&quot; PermissionSetName=&quot;FullTrust&quot; Policy <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?> <configuration> <mscorlib> <security> <policy> <PolicyLevel version=&quot;1&quot;> <CodeGroup class=&quot;UnionCodeGroup&quot; version=&quot;1&quot; PermissionSetName=&quot;Nothing&quot; Name=&quot;All_Code&quot; Description=&quot;Code group grants no permissio ns and forms the root of the code group tree.&quot;> <IMembershipCondition clas s=&quot;AllMembershipCondition&quot; version=&quot;1&quot;/> <CodeGroup class=&quot;UnionCodeGroup&quot; version=&quot;1&quot; PermissionSetName=&quot;FullTrust&quot; + 機器碼 (Native Code)
    29. 29. ASP.NET 遠端偵錯 <ul><li>遠端偵錯 : </li></ul><ul><ul><li>有錯誤立即進行偵錯,簡化偵錯流程 </li></ul></ul><ul><ul><li>保留完整的 “犯罪現場” </li></ul></ul><ul><li>需求 : </li></ul><ul><ul><li>在 ASP.NET 執行的主機上要安裝 VS2005 或遠端偵錯元件 </li></ul></ul><ul><ul><li>用戶端必須安裝 VS2005 與程式的原始碼 </li></ul></ul><ul><ul><li>必須對 ASP.NET 執行的主機有管理權限 </li></ul></ul><ul><ul><ul><li>偵錯自己的 process 時必須是 Administrators 或 Debugger Users 群組成員 </li></ul></ul></ul><ul><ul><ul><li>偵錯別人的 process 時,必須是 process 所在機器的 Administrators 群組成員 </li></ul></ul></ul>
    30. 30. ASP.NET 遠端偵錯
    31. 31. 大綱 <ul><li>即行時期系統監控 - ASP.NET 效能計數器 </li></ul><ul><li>ASP.NET 事件追蹤 </li></ul><ul><li>ASP.NET 追蹤功能 </li></ul><ul><li>遠端偵錯 ASP.NET 應用程式 </li></ul><ul><li>健康監控 - 應用程式集區設定 </li></ul>
    32. 32. ASP .NET 處理模型 IIS 5.0 TCP/IP WinSock 2.0 inetinfo.exe aspnet_isapi.dll Metabase FTP, SMTP, NNTP aspnet_wp.exe User Mode Kernel Mode Request Response named pipes Request Response 工作行程的啟動帳號 : ASPNET aspnet_wp.exe HTTP runtime App Domain App Domain
    33. 33. ASP .NET 執行時期 Attributes <ul><li>透過 Attributes 可以設定 ASP .NET 在執行時期的行為 </li></ul><ul><ul><li>設定在 <httpRuntime> 元素中 </li></ul></ul>Local Request 所佔用的最小執行緒數目 minLocalRequestFreeThreads Request 所佔用的最小執行緒數目 minFreeThreads 最大 Request 大小 maxRequestLength Request 最長執行時間 executionTimeout ASP .NET Request 佇列大小 appRequestQueueLimit 說明 Attribute 名稱
    34. 34. Health Monitoring <ul><li>在 machine.config 中的 <processModel> 元素中設定 enable 這個 Attribute </li></ul><ul><li>IIS 每 2 秒會檢查一次所有的 工作行程 </li></ul><ul><ul><li>記憶體大小是否有超過實體記憶體的 60% ( 可以使用 memoryLimit Attribute 設定 ) </li></ul></ul><ul><ul><li>完成的 Request 數目 </li></ul></ul><ul><ul><li>最後一次工作行程回應的時間 </li></ul></ul>
    35. 35. Health Monitoring <ul><li>當工作行程的記憶體超過指定比例 </li></ul><ul><ul><li>IIS 會暫停該工作行程所負責處理的所有要求 </li></ul></ul><ul><ul><li>將這些 request 重新導向新的 工作行程 </li></ul></ul><ul><ul><li>終止與回收舊工作行程的記憶體 </li></ul></ul><ul><ul><li>記錄事件到應用程式記錄檔中 ( 如果有設定 logLevel Attribute) </li></ul></ul><ul><li>如果在偵錯時不想讓 IIS 回收異常的 工作行程,可以設定 Registry </li></ul><ul><ul><li>HKLMSoftwareMicrosoftASP.NET UnderDebugger = 1 (DWORD) </li></ul></ul>
    36. 36. ASP .NET 處理模型 IIS 6.0 TCP/IP HTTP.SYS inetinfo.exe Metabase FTP, SMTP, NNTP w3wp.exe User Mode Kernel Mode Request Response WAS App Pool Mgr. Cording Mgr. aspnet_isapi.dll w3wp.exe aspnet_isapi.dll Response Request 工作行程的啟動帳號 : NETWORK SERVICE
    37. 37. IIS 6.0 處理模型 <ul><li>穩定性提昇 </li></ul><ul><ul><li>啟動工作行程 Isolation Mode </li></ul></ul><ul><ul><li>aspnet_isapi.dll 會載入工作行程,而非 inetinfo.exe </li></ul></ul><ul><ul><li>增加穩定性  aspnet_isapi.dll crash 並不會影響 Web Server </li></ul></ul><ul><li>效能提昇 </li></ul><ul><ul><li>HTTP.SYS 直接進行 web client 與 工作行程的連接處理,不需要透過 inetinfo.exe </li></ul></ul>
    38. 38. Orphaning Failed 工作行程 <ul><li>Web Administration Service (WAS) </li></ul><ul><ul><li>與 inetinfo.exe 進行銜接 </li></ul></ul><ul><ul><li>監控工作行程的狀態 </li></ul></ul><ul><ul><li>負責終止並回收異常工作行程的記憶體 </li></ul></ul><ul><li>Orphaning Failed ASP .NET 工作行程 </li></ul><ul><ul><li>將異常工作行程保留在記憶中,以進行偵錯,但是不再處理任何 request </li></ul></ul><ul><ul><li>cscript adsutil.vbs set w3svc/apppools/ orphanworkerprocess 1 </li></ul></ul>
    39. 39. 偵錯記憶體相關問題 <ul><li>.NET 記憶體管理與垃圾收集機制 </li></ul><ul><ul><li>連續記憶體空間處理 </li></ul></ul><ul><ul><li>記憶體 Generations </li></ul></ul><ul><ul><li>Main Object Heap </li></ul></ul><ul><ul><li>Large Object Heap </li></ul></ul><ul><li>記憶體使用狀況監測 </li></ul>
    40. 40. 垃圾收集機制 <ul><li>為了避免使用 linked list 來搜尋記憶體空間, Garbage Collection (GC) 會進行必要的記憶體搬移,以確保 Heap 記憶空間連續 </li></ul>Garbage Collection 已配置空間 已釋放空間 已配置空間 已配置空間
    41. 41. 記憶體 Generations <ul><li>根據記憶體的 “年齡”, GC 將記憶體分成 0, 1, 2 三個 generations </li></ul><ul><ul><li>每當開始回收某一 generation 記憶體時,所有大於該 generation 的記憶體 generation 自動昇級 </li></ul></ul><ul><ul><li>由於高 generation 的記憶體比較不會變動,因此每次回收的記憶體單位大小比較大,以減少記憶體拷貝時間 </li></ul></ul><ul><ul><ul><li>Generation 0 : 256 KB </li></ul></ul></ul><ul><ul><ul><li>Generation 1 : 2 MB </li></ul></ul></ul><ul><ul><ul><li>Generation 2 : 10 MB </li></ul></ul></ul>
    42. 42. Large Object Heap <ul><li>.NET Heap 分為下列兩部份 </li></ul><ul><ul><li>Main Managed Heap </li></ul></ul><ul><ul><ul><li>使用樹狀結構記錄物件 reference 狀況 </li></ul></ul></ul><ul><ul><ul><li>確保物件 reference 狀況正確 </li></ul></ul></ul><ul><ul><ul><li>追蹤循環 reference 狀況 </li></ul></ul></ul><ul><ul><li>Large Object Heap </li></ul></ul><ul><ul><ul><li>存放物件大小 >= 85,000 bytes 的物件 </li></ul></ul></ul><ul><ul><ul><li>GC 不回收這部份記憶體 !! </li></ul></ul></ul><ul><ul><ul><ul><li>記憶體搬移會花費太多時間 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>整個 Large Object Heap 會不斷長大 </li></ul></ul></ul></ul><ul><ul><ul><li>優先放在系統虛擬記憶體中 </li></ul></ul></ul>
    43. 43. 應用程式集區設定
    44. 44. 大綱 <ul><li>即行時期系統監控 - ASP.NET 效能計數器 </li></ul><ul><li>ASP.NET 事件追蹤 </li></ul><ul><li>ASP.NET 追蹤功能 </li></ul><ul><li>遠端偵錯 ASP.NET 應用程式 </li></ul><ul><li>健康監控 - 應用程式集區設定 </li></ul>
    45. 45. 總結 <ul><li>在不影響系統執行效能前提下 </li></ul><ul><ul><li>使用 ASP.NET 效能計數器 </li></ul></ul><ul><ul><li>ASP.NET 事件追蹤 </li></ul></ul><ul><li>ASP.NET 內建追蹤功能 </li></ul><ul><li>遠端偵錯 ASP.NET 應用程式 </li></ul><ul><ul><li>確保偵錯的環境一致 </li></ul></ul><ul><li>針對資源使用上有異常的應用程式進行集區設定 </li></ul>
    46. 46. © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×