手机
当前位置:查字典教程网 >编程开发 >C#教程 >利用windows性能计数器进行服务器性能监控示例分享
利用windows性能计数器进行服务器性能监控示例分享
摘要:复制代码代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;...

复制代码 代码如下:

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;

}

}

}

}

【利用windows性能计数器进行服务器性能监控示例分享】相关文章:

C#启动windows服务方法的相关问题分析

c#使用linq技术创建xml文件的小例子

c#中抽象类和接口的详细介绍

C#利用WMI操作DNS服务器(可远程操作,需要相应权限)

将DLL放入到资源中,运行时自动加载的小例子

C#编写的windows计算器的实例代码

深入C#判断操作系统类型的总结详解

通过C#调用cmd来修改服务启动类型

C#启动和停止windows服务的实例代码

winfrom 在业务层实现事务控制的小例子

精品推荐
分类导航