源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

利用windows性能计数器进行服务器性能监控示例分享

  • 时间:2021-01-13 23:30 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:利用windows性能计数器进行服务器性能监控示例分享
[u]复制代码[/u] 代码如下:
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;             }         }     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部