我正在从PerformanceCounters读取'%cpu'和'可用内存'的服务器上工作。 它在我的开发机器上运行良好。 但是在实际的服务器上,从这两个PerformanceCounter读取真的很慢。 至less在前两个读取操作。
执行以下代码可能需要4-6分钟时间:
Stopwatch watch = new Stopwatch(); Log.Instance.Debug("Going to initialize Diagnostic's PerformanceCounters"); watch.Start(); m_cpuPerformanceCounter = new PerformanceCounter("Processor","% Processor Time","_Total",true); m_MemoryPerformanceCounter = new PerformanceCounter("Memory","Available MBytes",true); m_cpuPerformanceCounter.NextValue(); m_MemoryPerformanceCounter.NextValue(); //Ensure an updated value... System.Threading.Thread.Sleep(1000); m_cpuPerformanceCounter.NextValue(); m_MemoryPerformanceCounter.NextValue(); watch.Stop(); Log.Instance.Debug("Finished initializing Diagnosticss PerformanceCounters. Time elapsed: {0}",watch.Elapsed);
当我在开发机器上运行这个代码时,它会在不到2秒的时间内完成(有时甚至更less)。 但是在我们产品的客户端应该使用的实际服务器上,这将需要很长时间。 见下文:
Finished initializing Diagnosticss PerformanceCounters. Time elapsed: 00:03:59.6706860
这些读取操作(以及后来的“读取”操作)执行起来非常重要。 甚至在一开始。
我的开发机器是Windows 7,64位,8GB RAM。
客户端服务器是Windows Server 2008 R2 Enterprise,64位,4 GB RAM。
为什么Mono在Linux和BSD上运行速度降低了1/3?
组类似的任务栏button
默认的IMarshal实现?
selectListView的特定列并将其打印在C#.net的新消息框中
Windows任务栏中search与我自己的结果
我Google(和Binged),但无法find任何答案。 为什么发生这种情况? 我该如何解决?
.NET:如何使用临时文件名传递命令行参数
在Mac和Windows上打开相同的.NET Core解决scheme
IIS – 从.NET应用程序的CLI中将目录设置为应用程序
如何在Ubuntu的MonoDevelop中使用System.Windows.Forms?
从C#中正在增长的文件中读取?
该问题很可能是由被监视系统上安装的附加软件提供的计数器。
在这种情况下,您应该为在系统注册表中注册的所有性能计数器执行性能计数器初始化扫描,这可以使用ProcMon完成。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。