前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >利用windows性能计数器进行服务器性能监控

利用windows性能计数器进行服务器性能监控

作者头像
liulun
发布于 2022-05-09 04:14:08
发布于 2022-05-09 04:14:08
79300
代码可运行
举报
文章被收录于专栏:liulunliulun
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Threading;
using System.Management;
using System.Runtime.InteropServices;
using System.Data;
using System.Data.SqlClient;
using System.DirectoryServices;
using System.Collections;
using System.Configuration;
using System.Collections.Specialized;
using System.IO;

namespace MON.Client
{
    public static class SysInfo
    {
        static Dictionary<string, PerformanceCounter> dic;
        static double DiskUsePercent;
        static double SysDiskUsePercent;
        static SysInfo()
        {
            try
            {
                dic = new Dictionary<string, PerformanceCounter>();
                foreach (string setting in ConfigurationManager.AppSettings)
                {
                    var arr = ConfigurationManager.AppSettings[setting].Split('#');
                    if (arr[arr.Length - 1] == "IsCounter")
                    {
                        try
                        {
                            var pc = new PerformanceCounter(arr[0], arr[1], arr[2]);
                            dic.Add(setting, pc);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(arr[0] + "找不到");
                            Log.WriteLog(ex.Message);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Log.WriteLog(ex.Message);
            }
        }
        static void initDiskInfo()
        {
            #region 备忘
            //只获取系统盘代码如下
            //ManagementObject CPANInfo = new ManagementObject(string.Format("win32_logicaldisk.deviceid=\"{0}\"", System.Environment.SystemDirectory.Substring(0, 2)));
            //CPANInfo.Get();
            //var s = Convert.ToDouble(CPANInfo["Size"]);
            //var l = Convert.ToDouble(CPANInfo["FreeSpace"]);
            //var d = (s - l) / s * 100;
            //return d;
            #endregion
            try
            {
                DriveInfo[] drives = DriveInfo.GetDrives();
                long totalSize = 0;
                long freeSize = 0;
                long CTotalSize = 0;
                long CFreeSize = 0;
                foreach (DriveInfo drive in drives)
                {
                    if (drive.DriveType == DriveType.CDRom)
                    {
                        continue;
                    }
                    totalSize += drive.TotalSize;
                    freeSize += drive.TotalFreeSpace;
                    if (drive.Name.StartsWith(System.Environment.SystemDirectory.Substring(0, 2)))
                    {
                        CTotalSize += drive.TotalSize;
                        CFreeSize += drive.TotalFreeSpace;
                    }
                }
                SysDiskUsePercent = (CTotalSize - CFreeSize) / (double)CTotalSize * 100;
                DiskUsePercent = (totalSize - freeSize) / (double)totalSize * 100;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Log.WriteLog(ex.Message);
            }
        }
        public static void Init()
        {
            //如有取数之前进行的业务可放在这里,提高性能
            initDiskInfo();
        }
        public static double GetSysInfo(string InfoKey)
        {
            try
            {
                if (dic.ContainsKey(InfoKey))
                {
                    return dic[InfoKey].NextValue();
                }
                else
                {
                    if (InfoKey == "SysDiskUsePercent")
                    {
                        return SysDiskUsePercent;
                    }
                    else if (InfoKey == "DiskUsePercent")
                    {
                        return DiskUsePercent;
                    }
                    else
                    {
                        return -1;
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Log.WriteLog(ex.Message);
                return -1;
            }
        }
    }
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<appSettings>
    <!--CPU使用率-->
    <add key="S_CPU" value="Processor#% Processor Time#_Total#IsCounter"/>
    <!--网站连接数-->
    <add key="S_WEB_PORT" value="Web Service#Anonymous Users/sec#默认网站#IsCounter"/>
    <!--数据库连接数-->
    <add key="S_CONNECT" value="SQLServer:General Statistics#User Connections##IsCounter"/>
    <!--实施人员可以无视MS TCP Loopback interface-->
    <add key="ReceiveDataInfo1" value="Network Interface#Bytes Received/sec#MS TCP Loopback interface#IsCounter"/>
    <add key="SentDataInfo1" value="Network Interface#Bytes Sent/sec#MS TCP Loopback interface#IsCounter"/> 
    <!--网卡接受字节速率-->
    <add key="S_FLOW_IN" value="Network Interface#Bytes Received/sec#Realtek PCIe GBE Family Controller#IsCounter"/>
    <!--网卡发送字节速率-->
    <add key="S_FLOW_OUT" value="Network Interface#Bytes Sent/sec#Realtek PCIe GBE Family Controller#IsCounter"/>    
    <!--WIN2003任务管理器性能选项卡 右下角的数据相同    与WIN7此处数据不同
    % Committed Bytes In Use
    是 Memory\\Committed Bytes 与 Memory\\Commit Limit 之间的比值。
    Committed memory 指如果需要写入磁盘时已在页面文件中保留空间的处于使用中的物理内存。
    Commit Limit 是由页面文件的大小而决定的。如果扩大了页面文件,该比例就会减小。
    这个计数器只显示当前百分比;它不是一个平均值。-->
    <add key="S_MERMORY" value="Memory#% Committed Bytes In Use##IsCounter"/>
    <!--数据库连接字符串-->
    <add key="SQLConnStr" value="Data Source=192.168.1.20;uid=sa;pwd=nj0819;Initial Catalog=CCMS_SH" />
    <!--当前监视的服务器-->
    <add key="ServerID" value="1" />
  </appSettings>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2011-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
​19-nmon
部署到被测试服务器上,可以监控不同的Linux系统(不同的linux发行版本,nmon命令是不同的)
zx钟
2021/05/27
2.1K0
​19-nmon
Jmeter系列(38)- 详解性能监控工具 nmon
https://www.cnblogs.com/poloyy/category/1746599.html
小菠萝测试笔记
2020/07/08
2.1K0
工具| nmon 性能监控利器
Nmon (Nigel’s Monitor)是由IBM 提供、免费监控 AIX 系统与 Linux 系统资源的工具。该工具可将服务器系统资源耗用情况收集起来并输出一个特定的文件,并可利用 excel 分析工具(nmon analyser)进行数据的统计分析。
用户1278550
2022/05/17
1.2K0
工具| nmon 性能监控利器
Nmon使用详解
Nmon 是免费监控 AIX 系统与 Linux 系统资源的工具。该工具可将服务器系统资源耗用情况收集起来并输出一个特定的文件,并可利用 excel 分析工具(nmon analyser)进行数据的统计分析。
周辰晨
2020/01/19
3.7K0
快速学习Linux常用性能监控命令及工具
在linux系统环境的测试开发过程中,我们常常需要评估系统性能,尤其在性能测试工作中,我们需要通过系统资源的监控,从而分析定位系统的性能瓶颈。
吾非同
2020/10/23
8470
linux服务器性能检测工具nmon使用
今天介绍一款linux系统服务器性能检测的工具-nmon及nmon_analyser (生成性能报告的免费工具),亲测可用。 一.介绍 nmon 工具可以帮助在一个屏幕上显示所有重要的性能优化信息,并动态地对其进行更新。这个高效的工具可以工作于任何哑屏幕、telnet 会话、甚至拨号线路。另外,它并不会消耗大量的 CPU 周期,通常低于百分之二。在更新的计算机上,其 CPU 使用率将低于百分之一。
zhangdd
2018/08/01
2.2K0
一文读懂nmon监控
nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,相对于其它一些系统资源监控工具来说,nmon所记录的信息是比较全面的,它能在系统运行过程中实时地捕捉系统资源的使用情况,并且能输出结果到文件中,然后通过nmon_analyzer工具产生数据文件与图形化结果。 nmon所记录的数据包含以下一些方面: ● cpu占用率 ● 内存使用情况 ● 磁盘I/O速度、传输和读写比率 ● 文件系统的使用率 ● 网络I/O速度、传输和读写比率、错误统计率与传输包的大小 ● 消耗资源最多的进程 ● 计算机详细信息和资源 ● 页面空间和页面I/O速度 ● 用户自定义的磁盘组 ● 网络文件系统
Wu_Candy
2022/07/04
1.2K0
一文读懂nmon监控
nmon 及nmon analyser工具使用简介
nmon及nmon analyser工具使用简介 by:授客 下载地址 http://nmon.sourceforge.net/pmwiki.php?n=Site.Download 软件配置 1
授客
2019/09/12
4.1K0
nmon 及nmon analyser工具使用简介
怎么用 Nmon 工具跟踪服务器使用状态和数据分析
NMON 是IBM 提供给AIX 服务器上观察系统运行性能的一个工具,NMON工具本身主要有几个功能
AustinDatabases
2021/10/26
1.3K0
怎么用 Nmon 工具跟踪服务器使用状态和数据分析
服务器性能监控神器nmon使用介绍
Nmon (Nigel’s Monitor)是由IBM 提供、免费监控 AIX 系统与 Linux 系统资源的工具。该工具可将服务器系统资源耗用情况收集起来并输出一个特定的文件,并可利用 excel 分析工具(nmon analyser)进行数据的统计分析。 搜索下载nmon,上传到服务器解压。我用一个比较老的版本给大家演示一下。解压完有nmon16e_x86_rhel65,和nmon analyser v34a.xls。 nmon16e_x86_rhel65前面是可执行文件,会生成监控文件,监控文件里面就是采集的服务器硬件指标,后缀是.nmon。 nmon analyser v34a.xls用来将这个监控文件转化为容易读的Excel表格,带有图表。 这个工具启动后自动后台运行,可以长时间采集硬件指标,适用于采集一段时间,例如采集几天,然后汇总对比分析性能的场景。 通过分析硬件资源的占用变化原因,是会有很多新的发现,使我们对系统的掌握更加透彻。 启动nmon的命令如下 ./nmon16e_x86_rhel65 -f -s 10 -c 999999999 -m ./ 若首次执行失败提示Permission Denied,执行 chmod +x nmon16e_x86_rhel65 即可。 参数解释: -s 10 每 10 秒采集一次数据。 -c 999999999 采集 999999999 次硬件数据,表示我要长时间采集 -f 生成的数据文件名中包含文件创建的时间。 -m 生成的数据文件的存放目录为当前目录。
震八方紫面昆仑侠
2020/08/12
9420
服务器性能监控神器nmon使用介绍
性能-Nmon
Nmon是一款计算机性能系统监控工具,因为它免费,体积小,安装简单,耗费资源低,广泛应用于AIX和Linux系统。
wangmcn
2022/07/22
2.2K0
性能-Nmon
常见Linux调优命令和工具
引言: 应同学的要求,分享些基础的知识。 没有比Linux更基础了,关键问题来了,你真的认真看了和转发了吗? O(∩_∩)O哈哈~ 要实现对Linux的调优,就需要用到一些Linux系统命令和工具来观察与监控系统的性能。下面介绍几个最常用的Linux调优命令和工具。 1. top命令 top命令经常用来监控Linux的系统状态,如CPU、内存的使用情况。下面通过一个运行中的Web服务器的top监控截图,讲述top视图中各种数据的含义,以及视图中各进程(任务)的字段的排序。 top进入视图,如图4.17所示。
大数据和云计算技术
2018/03/08
3.1K0
常见Linux调优命令和工具
nmon 使用
官网:http://nmon.sourceforge.net/pmwiki.php 步骤 1. 下载nmon到linux上; 2. 解压tar包,根据使用的linux版本选择使用的文件,并对其加上使用
千往
2018/01/24
1.3K0
nmon 使用
性能工具之监控工具nmon自动部署
在做性能测试需要收集操作系统一些指标方便分析,如果是多台linux系统我们怎么用一个命令启动nmon收集指标,不妨这样试一试,其实有很多方法比如用python、java等等工具,这边文章有最原始ant命令执行命令与下载文件清除文件。
高楼Zee
2019/11/14
1.2K0
一款好用的Linux系统服务器性能监控分析工具介绍「建议收藏」
软件性能测试过程中经常要对服务器性能指标(比如CPU、内存、磁盘IO及网络IO等等)进行监控以分析出软件在此服务器上的性能瓶颈以便进行后续的服务器调优及软件性能优化。下面为大家介绍一款小编认为比较好用的Linux系统服务器性能监控分析工具:nmon for Linux。 从nmon工具包中选择监控服务器匹配的nmon监控可执行文件(如下图所示:小编使用的是nmon_linux_x86_64)
全栈程序员站长
2022/09/02
1.9K0
一款好用的Linux系统服务器性能监控分析工具介绍「建议收藏」
通过xshell安装Nmon到Linux服务器上并导出监控结果
准备阶段 查看linux版本 uname -a,发现是centos7版本 64位 Linux centos73-247 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22
翟凤玺
2020/10/29
1.3K0
系统之眼!Linux系统性能监控工具Glances
glances是一个基于python语言开发,可以为linux或者UNIX性能提供监视和分析性能数据的功能。glances在用户的终端上显示重要的系统信息,并动态的进行更新,让管理员实时掌握系统资源的使用情况,而动态监控并不会消耗大量的系统资源,比如CPU资源,通常消耗小于2%,glances默认每两秒更新一次数据。同时glances还可以将相同的数据捕获到一个文件,便于以后对报告进行分析和图形绘制,支持的文件格式有.csv电子表格格式和和html格式。
民工哥
2020/09/15
2.1K0
系统之眼!Linux系统性能监控工具Glances
Linux下常用的监控工具和命令
如果性能测试的目标服务器是linux系统,在如何使用linux自带的命令来实现性能测试过程的监控分析呢?
苦叶子
2018/07/25
1.2K0
Linux下常用的监控工具和命令
Linux磁盘监控工具说明
一、系统自带 1.1 iostat 系统systat包里的工具,以kB/s为单位统计,2表示以2秒为频率统计一次: iostat –x –k 2 10000 rrqm/s:每秒这个设备相关的读取请求
小小科
2018/06/20
4.6K0
Linux性能回溯工具-sysstat、atop、oswatch、nmon
在企业应用中,除了经常会用到企业级的性能监控和告警工具(如nagios、zabbix、Prometheus),还会在服务器设备出现性能问题时,可以通过部署一些可以进行性能回溯和追踪的性能分析工具,便于在主机hang死或挂机时,定位主机各项指标是否过载,也可以定位到具体是哪些程序引发了性能瓶颈。
start.zhou
2020/11/18
3.9K0
Linux性能回溯工具-sysstat、atop、oswatch、nmon
相关推荐
​19-nmon
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验