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

目次

概要

ツールの利用ポイント

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

の部分で使用します。

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

システム情報収集

イベントログ

Microsoft Product Support Report(MPS_Report)

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

監視系

各種リソース

Windowsタスクマネージャ

WindowsOS付属の簡易的な各種リソース監視ツール。

パフォーマンス

が可能、これは

で設定可能。

プロセス監視

Process Monitor

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

Process Explorer

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

Sysinternals Handle

このプログラムの GUI ベースのバージョンは、Process Explorer

アプリケーション固有ログ

例えば

DB監視

WAS監視

クラスタ監視

クラスタログ

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

ツール

ログ

デバッグ ツールセット

Debugging Tools for Windows

Windows Performance Recorder (WPR)

トレースデータを採取するコンポーネント

Windows Performance Analyzer (WPA)

トレースデータを GUI で表すコンポーネント

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

WinDbg

CDB

NTSD

KD

,etc.

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

ADPlus

ADPlus : Auto Dump+

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

UMDH

UMDH:User Mode Dump Heap

プロファイラ

ユーザモード

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

カーネル オブジェクトのハンドル(リソースリーク)確認

このプログラムの GUI ベースのバージョンは、Process Explorer

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

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

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

GDIView

ダンプ取得に使用するツールの一覧


Tags: :障害対応, :性能, :デバッグ


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