我有一个Windows服务,我负责编写。它是半复杂的,可以动态创建一堆图像,然后将这些图像提供给Web应用程序。
因此,定期将cpu固定为100%。我以前在它上面运行过Ants Profiler来修复由于缺少处理对象等而导致的一堆内存泄漏问题。
现在可能每天约一次它将机器上的CPU固定为100%,并且确实在整个系统中造成了很大的破坏。我看过这篇专门针对这种特定情况进行故障排除的帖子。 :
Windows Service Increasing CPU Consumption
我不会说我过去会排除故障,因为我会继续这样做,但我会说我正在寻找其他选择。基本上,在此期间处理这种情况的方法。
例如,有没有办法可以监控服务本身内的CPU使用情况,并且在100%挂钩的cpu返回后自动重启服务?或者可能通过任务调度程序运行脚本或bat文件,该任务调度程序会不断检查此方案并在存在时重新启动服务?我知道这些并不是很好的解决方案,但目前我正在寻找能找到的最佳非根本解决方案。
答案 0 :(得分:0)
听起来像GC(垃圾收集器)可能正在开始并压缩大量内存。如果是这种情况,您可以分配固定大小的缓冲区,这些缓冲区可以重复用于您的图像工作。你尝试过像perfmon这样的东西吗?