ASP.NET MVC4 服务器检测

ASP.NET MVC4 服务器检测

 

主要思路是,初始化PerformanceCounter(只读)性能计数器组件,将其与本地计算机上指定的系统性能计数器 关联

                         //计数器名(性能对象)性能计数器名

publicPerformanceCounter (string categoryName, string counterName, string

实例名

instanceName) 

  • 请记住,ASP.NET进程可以访问性能计数器,但不能读取,创建或删除计数器。

自定义一个SystemMonitor模板将监控服务器硬件设施的代码封装起来。可以在前端做一个 ajax 轮询去时刻监控服务器状态。

但是考虑到一个问题,这样做 AJAX 轮询势必会增加服务器的损耗。会不会适得其反。比如:容易造成线程堵塞。

模型代码:

        ///获取CPU信息

           /** 使用该类型获取某个计数器的值也是很简单的,只需要指定类别,实例名,计数器名

           *  PerformanceCounter pc1 = newPerformanceCounter("Processor","% ProcessorTime","_Total"); //参数分别为:类别名,计数器名,实例名

            *然后通过pc1.NextValue()获得相关计数器的值就可以了

           */

              public stringPerformanceCounterFun(stringCategoryName = "Processor", stringInstanceName = "_Total", stringCounterName = "% Processor Time")

        {

            PerformanceCounter pc = newPerformanceCounter(CategoryName, CounterName,InstanceName);

        

            dynamicValue_1 = pc.NextValue(); //这个值固定0

           System.Threading.Thread.Sleep(1000);

            //  Thread.Sleep(1000); // wait for 1 second

            dynamiccpuLoad = pc.NextValue();

            return("CPU load = " + cpuLoad + "%");

 

        }

 

 

        //获取应用列表

        public  objectGetCategoryNameList()

        {

            PerformanceCounterCategory[] myCat2;

           myCat2 = PerformanceCounterCategory.GetCategories();

            //  myCat2.CategoryName.ToString()

            returnmyCat2;

        }

 

        //3根据categoryNamecounterNameinstanceName获得性能情况显示`

 

 

    }

  

 

 

    //=======================================获取内存信息==============================================================

    ///<summary>

    ///获取内存信息

    ///</summary>

    publicclassMemoryInfo

    {

 

        //定义内存的信息结构

        [StructLayout(LayoutKind.Sequential)]

        publicstructMEMORY_INFO

        {

            publicuintdwLength;

            publicuintdwMemoryLoad;

            publicuintdwTotalPhys;

            publicuintdwAvailPhys;

            publicuintdwTotalPageFile;

            publicuintdwAvailPageFile;

            publicuintdwTotalVirtual;

            publicuintdwAvailVirtual;

        }

 

        ///<summary>

        ///kernel32.dllWindows9x/Me中非常重要的32位动态链接库文件,属于内核级文件。

        ///它控制着系统的内存管理、数据的输入输出操作和中断处理,当Windows启动时,kernel32.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。

        ///</summary>

 

        [DllImport("kernel32")]

        privatestaticexternvoidGetWindowsDirectory(StringBuilder WinDir,intcount);

 

        [DllImport("kernel32")]

        privatestaticexternvoidGetSystemDirectory(StringBuilder SysDir,intcount);

 

        [DllImport("kernel32")]

        privatestaticexternvoidGlobalMemoryStatus(ref MEMORY_INFOmeminfo);

 

        publicstringGetMemInfo()

        {

            //调用GlobalMemoryStatus函数获取内存的相关信息

            MEMORY_INFO MemInfo = newMEMORY_INFO();

           GlobalMemoryStatus(refMemInfo);

            //拼接字符串

            StringBuilder sb = new StringBuilder();

            returnMemInfo.dwMemoryLoad.ToString();

        }

  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值