利用windows性能計(jì)數(shù)器進(jìn)行服務(wù)器性能監(jiān)控示例分享
更新時(shí)間:2014年01月11日 11:19:23 作者:
這篇文章主要介紹了利用windows性能計(jì)數(shù)器進(jìn)行服務(wù)器性能監(jiān)控的方法,大家可以參考擴(kuò)展其它功能
復(fù)制代碼 代碼如下:
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 備忘
//只獲取系統(tǒng)盤代碼如下
//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()
{
//如有取數(shù)之前進(jìn)行的業(yè)務(wù)可放在這里,提高性能
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;
}
}
}
}
相關(guān)文章
c# Winform 程序自動(dòng)更新實(shí)現(xiàn)方法
Winform程序自動(dòng)更新我也是第一次做,網(wǎng)上找了自動(dòng)更新的源碼,后來又根據(jù)在網(wǎng)上看到的一些方法,自己試了很久,最終還是有寫錯(cuò)誤,所以花了錢讓別人幫忙調(diào)試成功的,下面是我自己搗騰出來的,方便大家借鑒,如果有什么錯(cuò)誤的地方歡迎指正2017-02-02C# 并行和多線程編程——Task進(jìn)階知識(shí)
這篇文章主要介紹了C# 并行和多線程編程——Task進(jìn)階知識(shí)的的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-02-02c#使用windows服務(wù)更新站點(diǎn)地圖的詳細(xì)示例
這篇文章主要介紹了c#使用windows服務(wù)更新站點(diǎn)地圖的詳細(xì)示例,需要的朋友可以參考下2014-04-04基于Unity Line Renderer組件的常用屬性說明
這篇文章主要介紹了基于Unity Line Renderer組件的常用屬性說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-04-04

C#使用checkedListBox1控件鏈接數(shù)據(jù)庫的方法示例
這篇文章主要介紹了C#使用checkedListBox1控件鏈接數(shù)據(jù)庫的方法,結(jié)合具體實(shí)例形式分析了數(shù)據(jù)庫的創(chuàng)建及checkedListBox1控件連接數(shù)據(jù)庫的相關(guān)操作技巧,需要的朋友可以參考下
2017-06-06