zoukankan      html  css  js  c++  java
  • 利用ProcDump工具诊断Windows平台上的Oracle数据库性能

    ProcDump与Procexp一样是Windows平台上的内部调试工具,Procexp采用图形界面体现系统整体及个别进程的性能信息,而ProcDump则与我们在Unix平台上使用的性能分析工具类似使用CLI命令行界面。 Procdump目前的版本号为3.04,可以从其Homepage上下载到该工具,该监控软件由Mark Russinovich开发,是一款Free Software。其官方介绍如下:
    ProcDump is a command-line utility whose primary purpose is monitoring an application for
    CPU spikes and generating crash dumps during a spike that an administrator or developer can use to
    determine the cause of the spike. ProcDump also includes hung window monitoring
    (using the same definition of a window hang that Windows and Task Manager use),
    unhandled exception monitoring and can generate dumps based on the values of system performance counters.
    It also can serve as a general process dump utility that you can embed in other scripts.
    Procdump可以用于监控应用进程的CPU峰值,并在峰值阶段生成crash dump转储信息,其功能还包括:
    • 监控hang住的窗口
    • 可以为未处理的意外(unhandled exceptions)生成dump
    • 基于系统性能计数器(system performance counters)生成dump
    • 因为Procdump是基于命令行的,所以它可以被嵌入在脚本中
    以下为Procdump的命令行选项:
       -64     By default Procdump will capture a 32-bit dump of a 32-bit process
               when running on 64-bit Windows. This option overrides to create a
               64-bit dump.
       -b      Treat debug breakpoints as exceptions (otherwise ignore them).
       -c      CPU threshold at which to create a dump of the process.
       -e      Write a dump when the process encounters an unhandled exception.
               Include the 1 to create dump on first chance exceptions.
       -h      Write dump if process has a hung window (does not respond to
               window messages for at least 5 seconds).
       -m      Memory commit threshold in MB at which to create a dump of the
               process.
       -ma     Write a dump file with all process memory. The default
               dump format includes thread and handle information.
       -mp     Write a dump file with thread and handle information, and all
               read/write process memory. To minimize dump size, memory areas
               larger than 512MB are searched for, and if found, the largest
               area is excluded. A memory area is the collection of same
               sized memory allocation areas. The removal of this (cache)
               memory reduces Exchange and SQL Server dumps by over 90%.
       -n      Number of dumps to write before exiting.
       -o      Overwrite an existing dump file.
       -p      Trigger on the specified performance counter when the threshold
               is exceeded. Note: to specify a process counter when there are
               multiple instances of the process running, use the process ID
               with the following syntax: "\Process(_)\counter"
       -r      Reflect (clone) the process for the dump to minimize the time
               the process is suspended (Windows 7 and higher only).
       -s      Consecutive seconds before dump is written (default is 10).
       -t      Write a dump when the process terminates.
       -u      Treat CPU usage relative to a single core.
       -x      Launch the specified image with optional arguments.
    以下为常见的Procdump使用示例:
    To just create a dump of a running process, omit the CPU threshold. If
    you omit the dump file name, it defaults to _.dmp.
    
    Example: Write up to 3 dumps of a process named 'consume' when it exceeds
             20% CPU usage for five seconds to the directory
             c:\dump\consume with the name consume.dmp:
                C:\>procdump -c 20 -s 5 -n 3 -o consume c:\dump\consume
    Example: Write a dump for a process named 'hang.exe' when one of it's
             windows is unresponsive for more than 5 seconds:
                C:\>procdump -h hang.exe hungwindow.dmp
    Example: Write 3 dumps 5 seconds apart:
                C:\>procdump -s 5 -n 3 notepad.exe notepad.dmp
    Example: Launch a process and then monitor it for excessive CPU usage:
                C:\>procdump -c 30 -s 10 -x consume.exe consume.dmp
    Example: Write a dump of a process named 'iexplore' to a dump file
             that has the default name iexplore.dmp:
                C:\>procdump iexplore
    Example: Write a dump of a process named 'outlook' when total system
             CPU usage exceeds 20% for 10 seconds:
                C:\>procdump outlook -p "\Processor(_Total)\% Processor Time" 20
    Example: Write a dump of a process named 'outlook' when Outlook's handle count
             exceeds 10000:
                C:\>procdump outlook -p "\Process(Outlook)\Handle Count" 10000
    具体使用Procdump监控Oracle进程的方法:
    在我们的场景中某个服务线程消耗了大量的CPU资源:
    
    Terminal A:
    sqlplus / as sysdba
    SQL> select count(1) from obj$,obj$,obj$;
    
    Terminal B:
    C:\Users\Maclean Liu>procdump  -c 20  -ma oracle.exe
    
    ProcDump v3.04 - Writes process dump files
    Copyright (C) 2009-2011 Mark Russinovich
    Sysinternals - www.sysinternals.com
    
    Process:               oracle.exe (1776)
    CPU threshold:         20% of system
    Performance counter:   n/a
    Commit threshold:      n/a
    Threshold seconds:     10
    Number of dumps:       1
    Hung window check:     Disabled
    Exception monitor:     Disabled
    Terminate monitor:     Disabled
    Dump file:             C:\Users\Maclean Liu\oracle.dmp
    
    [19:56.51] CPU:          25%  1s
    [19:56.52] CPU:          24%  2s
    [19:56.53] CPU:          24%  3s
    [19:56.54] CPU:          25%  4s
    [19:56.55] CPU:          24%  5s
    [19:56.56] CPU:          24%  6s
    [19:56.57] CPU:          24%  7s
    [19:56.58] CPU:          25%  8s
    [19:56.59] CPU:          24%  9s
    [19:57.00] CPU:          25%  10s
    
    Process has hit CPU spike threshold.
    Writing dump file C:\Users\Maclean Liu\oracle_110805_195700.dmp ...
    Dump written.
    
    Dump count reached.
    
    因为Oracle.exe的cpu峰值达到了我们所设置的20,所以产生了进程dump转储文件oracle_110805_195700.dmp
    Windbg是windows平台上的图形化dump分析工具,可以通过安装Debugging Tools for Windows包获得该程序,或者直接点击这里下载。 成功安装debugging工具后,从start->Debugging Tools for Windows (x86)->windbg启动工具,在主界面上选中File->Open Crash Dump 并输入dump文件的位置,成功分析后的显示: windbg-dump-oracle
  • 相关阅读:
    UVa 116 单向TSP(多段图最短路)
    POJ 1328 Radar Installation(贪心)
    POJ 1260 Pearls
    POJ 1836 Alignment
    POJ 3267 The Cow Lexicon
    UVa 1620 懒惰的苏珊(逆序数)
    POJ 1018 Communication System(DP)
    UVa 1347 旅行
    UVa 437 巴比伦塔
    UVa 1025 城市里的间谍
  • 原文地址:https://www.cnblogs.com/macleanoracle/p/2967844.html
Copyright © 2011-2022 走看看