Open棟梁Project - マイクロソフト系技術情報 Wiki

目次

概要

ツールの利用ポイント

監視・プロファイル ツールやサポートツールは、「サーバーの監視」のフローチャート中の

の部分で使用します。

障害対応のノウハウと利用可能なツールを把握しておくことで、

監視系

各種リソース

Windowsタスクマネージャ

WindowsOS付属の簡易プロセス監視ツール。

プロセス監視

パフォーマンスモニタ

WindowsOS付属のプロセス監視ツール。

Process Monitor

プロセス監視(各種イベント監視)

Process Explorer

プロセス監視 / ハンドル数調査 / ユーザモードダンプ取得

Handle

ハンドル数調査

DB監視

SQL Server系

ツール

ログ

ネットワーク監視・プロファイル

ツール

ログ

システム情報収集

Microsoft Product Support Report(MPS_Report)

環境変更時や障害発生時の各種ログの収集ツール
(各製品毎のエディションが用意されている)

デバッグ ツールセット

Debugging Tools for Windows

ライブ・デバッグ・ダンプ取得・分析

WinDbg

CDB

NTSD

KD

,etc.

IISライブ・デバッグ、ダンプ取得・分析

ADPlus

アンマネージド・ヒープ解析

UMDH

UMDH:User Mode Dump Heap

ダンプ系

ユーザモード プロセスダンプ

UMPD(User Mode Process Dumper )

ユーザモードプロセスダンプ取得

WER(Windows Error Reporting)

Windowsエラーレポートの情報を取得

ダンプサマリ

Dumpchk.exe

メモリ ダンプ ファイルの簡易検証

Debug Diagnostics

ユーザモードプロセスダンプの取得・分析(サマリの生成)

プロファイラ

ユーザモード

Visual Studio

CLR Profiler

マネージド・コード・プロファイラ(メソッドの呼出回数・時間、メモリ割当・消費、オブジェクト接続・ルート追跡)

SOS.dll(SOS拡張)

マネージド・コード・プロファイラ(ライブ・デバッグ & ダンプ分析)

Managed Stack Explorer

マネージド・コード・プロファイラ(スレッド ダンプ)

C#アプリでデットロックぽい問題が発生したと聞いて.NETでのスレッドダンプ調べてみました。
元ネタはここです。~ http://stackoverflow.com/questions/190236/how-do-i-make-a-thread-dump-in-net-a-la-jvm-thread-dumps

Managed Stack Explorerを使う方法とWinDbgを使う方法紹介されてますが、
WinDbgはデバッカだし、簡単なManaged Stack Explorerを使う方法について書いてみたいと思います。

DevPartner? Studio

マネージド・コード・プロファイラ

その他のマネージド・コード・プロファイラ

Rational PurifyPlus? for Windows

アンマネージドコードプロファイラ

カーネルモード

プロファイラ

Driver Verifierカーネルモードドライバのデバッグ/メモリ分析

Memory Pool Monitor

カーネルモードドライバのメモリ分析

Desktop Heap Monitor

デスクトップ・ヒープのメモリ分析

メモリ・リーク

タスクマネージャ

「パフォーマンス」タブ

【】内はVista以降

「プロセス」タブ

参考資料

パフォーマンスカウンタ

メモリ空き容量

未使用ページリスト、ゼロページリスト、スタンバイ リストの合計

メモリ使用量@プロセス毎

マネージド・メモリ@プロセス毎

ハンドルリソースリーク

ハンドルリソースリーク@プロセス毎

ハンドルリークはカーネルモードメモリの圧迫につながる。

マネージド・ソース・リーク@プロセス毎

Heap(パフォーマンス オブジェクト)

以下の設定で有効になる。

参考資料

ページングの分析はMemory\Page Read/secを参照する。

ヒープ解析

アンマネージド

UMDH:User Mode Dump Heap

マネージド

ダンプ解析

アンマネージド

マネージド

カーネル メモリ スペース

一般ユーザーのために設計されていないことに注意してください。カーネル・デバッガに既に精通しておりウィンドウズの内部についての知識を持っており、カーネル・モード・プログラムをデバッグする基礎的な技術を持っているユーザを想定しています。

カーネル オブジェクトのハンドル

タスクマネージャ

パフォーマンスカウンタ

Sysinternals Handle

メモリ プール(ページ プールと非ページ プール)

タスクマネージャ、パフォーマンスカウンタ

Memory Pool Monitor ユーティリティ (Poolmon.exe)

ページ プールと非ページ プール、およびターミナル サービス セッション用に 使用されるメモリ プールからのメモリ割り当てに関してOSが収集するデータを表示する。
これによりカーネルモードで動作するモジュール(ドライバ)のリーク問題を検出可能(必要に応じてgflagsを設定することで割り当ての際に、ドライバをある程度識別可能なTagが付与される)。

WinDbg+Kdの!poolused拡張コマンド

Driver Verifier

プール・トラッキング機能を有効にした状態で(プールトラッキング機能は負荷があるので、本番に適用する場合は検証が必要)カーネル メモリダンプや、完全メモリダンプでカーネル メモリ スペースをダンプ出力し、これを分析することでカーネルドライバのメモリリークを確認する。

Sysinternals Notmyfault

基本的にはブルースクリーンを発生させるためのツールであるが、この他にも、指定した増分値で非ページ プールまたはページ プールのいずれかにリークを発生させるオプションがある。

デスクトップ・ヒープ

Desktop Heap Monitor

Desktop Heap Monitorで、Service-0x0-3e7$\Default の情報が、Session 0 へログインしないと確認できない件。

Windbg+LiveKd?の!dskheap拡張コマンド

チューニング方針

当該デスクトップのUsed Rateの合計が100%以下であれば他のデスクトップに影響を与えることは無い。しかし、余裕を持たせるため、当該デスクトップのUsed Rateの合計は、50-70%以下になるようにする。

チューニング方法

USERオブジェクト、GDIオブジェクト

タスクマネージャ

Sysinternals Process Explorer

GDIオブジェクトの数、また、GDIオブジェクトが消費するプールの上限値を確認できる(ただしWinDbgをインストールして、シンボルサーバを設定する必要がある)。

Sysinternals Testlimit

Sysinternals の Testlimitユーティリティを実行すると、USERオブジェクト、GDIオブジェクト数の制限を簡単に確認することができる(可能な限りまUSERオブジェクト、GDIオブジェクトを作成する)。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion?\Windows
USERProcessHandleQuota?とGDIProcessHandleQuota?には、ひとつのプロセスが利用できる。
最大のUSERオブジェクトとGDIオブジェクトの数が設定されている。デフォルトの値は 其々10,000。
#1つのセッションで作成できる USERオブジェクト、GDIオブジェクト数に対する制限は 其々65,535


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS