Windows服务定期将CPU定为100%,可能的方法来处理这种情况?

时间:2013-11-21 00:37:46

标签: c# windows-services cpu-usage

我有一个Windows服务,我负责编写。它是半复杂的,可以动态创建一堆图像,然后将这些图像提供给Web应用程序。

因此,定期将cpu固定为100%。我以前在它上面运行过Ants Profiler来修复由于缺少处理对象等而导致的一堆内存泄漏问题。

现在可能每天约一次它将机器上的CPU固定为100%,并且确实在整个系统中造成了很大的破坏。我看过这篇专门针对这种特定情况进行故障排除的帖子。 :

Windows Service Increasing CPU Consumption

我不会说我过去会排除故障,因为我会继续这样做,但我会说我正在寻找其他选择。基本上,在此期间处理这种情况的方法。

例如,有没有办法可以监控服务本身内的CPU使用情况,并且在100%挂钩的cpu返回后自动重启服务?或者可能通过任务调度程序运行脚本或bat文件,该任务调度程序会不断检查此方案并在存在时重新启动服务?我知道这些并不是很好的解决方案,但目前我正在寻找能找到的最佳非根本解决方案。

1 个答案:

答案 0 :(得分:0)

听起来像GC(垃圾收集器)可能正在开始并压缩大量内存。如果是这种情况,您可以分配固定大小的缓冲区,这些缓冲区可以重复用于您的图像工作。你尝试过像perfmon这样的东西吗?