12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using SuperSocket.SocketBase.Metadata;
- using System.Diagnostics;
- using SuperSocket.SocketBase;
- namespace SuperSocket.SocketEngine
- {
- [StatusInfo(StatusInfoKeys.CpuUsage, Name = "CPU Usage", Format = "{0:0.00}%", DataType = typeof(double), Order = 112)]
- [StatusInfo(StatusInfoKeys.MemoryUsage, Name = "Memory Usage", Format = "{0:0.00}%", DataType = typeof(double), Order = 113)]
- partial class AppDomainAppServer
- {
- private static Process m_Process;
- private readonly static bool m_AppDomainMonitoringSupported = false;
- static AppDomainAppServer()
- {
- try
- {
- AppDomain.MonitoringIsEnabled = true;
- m_AppDomainMonitoringSupported = true;
- }
- catch (NotImplementedException)
- {
- return;
- }
- m_Process = Process.GetCurrentProcess();
- }
- protected override bool StatusMetadataExtended
- {
- get
- {
- return m_AppDomainMonitoringSupported;
- }
- }
- public override StatusInfoCollection CollectServerStatus(StatusInfoCollection nodeStatus)
- {
- var statusCollection = base.CollectServerStatus(nodeStatus);
- if (!m_AppDomainMonitoringSupported)
- return statusCollection;
- if (statusCollection != null && m_HostDomain != null)
- {
- if (m_Process.TotalProcessorTime.TotalMilliseconds > 0)
- {
- var value = m_HostDomain.MonitoringTotalProcessorTime.TotalMilliseconds * 100 / m_Process.TotalProcessorTime.TotalMilliseconds;
- statusCollection[StatusInfoKeys.CpuUsage] = value;
- }
- if (AppDomain.MonitoringSurvivedProcessMemorySize > 0)
- {
- var value = (double)m_HostDomain.MonitoringSurvivedMemorySize * 100 / (double)AppDomain.MonitoringSurvivedProcessMemorySize;
- statusCollection[StatusInfoKeys.MemoryUsage] = (double)value;
- }
- }
- return statusCollection;
- }
- }
- }
|