-
C#教程之利用windows性能计数器进行服务器性能监
代码如下:
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;
}
}
}
}
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式