C# Windows服务周期性地将cpu固定在100%,处理这种情况的可能方法是什么?

C# Windows服务周期性地将cpu固定在100%,处理这种情况的可能方法是什么?,c#,windows-services,cpu-usage,C#,Windows Services,Cpu Usage,我有一个我部分负责编写的windows服务。它是半复杂的,在运行中创建一组图像,然后将这些图像输入到web应用程序 因此,它会定期将cpu固定到100%。我以前在它上运行过Ants Profiler,以修复由于缺少处理对象等而导致的一系列内存泄漏问题 现在大概每天有一次,它会将机器上的cpu固定在100%,并在整个系统中造成很大的破坏。我看过这篇文章,它专门针对这种特殊情况进行故障排除: 我不会说我已经排除了故障,因为我会继续这样做,但我会说我正在寻找其他选择。基本上,在这段时间内处理这种情况

我有一个我部分负责编写的windows服务。它是半复杂的,在运行中创建一组图像,然后将这些图像输入到web应用程序

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

现在大概每天有一次,它会将机器上的cpu固定在100%,并在整个系统中造成很大的破坏。我看过这篇文章,它专门针对这种特殊情况进行故障排除:

我不会说我已经排除了故障,因为我会继续这样做,但我会说我正在寻找其他选择。基本上,在这段时间内处理这种情况的方法


例如,有没有一种方法可以监视服务本身中的cpu使用情况,并在返回100%固定cpu时自动重新启动服务?或者可能通过任务调度器运行脚本或bat文件,该任务调度器不断检查此场景,并在当前情况下重新启动服务?我知道这些都不是很好的解决方案,但目前我正在寻找我能找到的最好的非根本原因解决方案。

听起来GC(垃圾收集器)可能正在启动并压缩大量内存。如果是这种情况,您可能能够分配固定大小的缓冲区,用于图像处理。您是否尝试过perfmon之类的工具?

是的,perfmon在过去使用过,故障排除已经进行了一段时间,几乎达到了一年的规模。