【发布时间】:2009-05-08 13:48:30
【问题描述】:
我有一些托管在 Windows 服务中的 WCF 服务。昨天查看任务管理器,发现我的windows服务进程的CPU时间超过5小时,而其他所有进程的大部分时间都是0。
这是什么意思?
我应该担心 CPU 时间超过 5 小时吗?
【问题讨论】:
标签: wcf windows-services cpu
我有一些托管在 Windows 服务中的 WCF 服务。昨天查看任务管理器,发现我的windows服务进程的CPU时间超过5小时,而其他所有进程的大部分时间都是0。
这是什么意思?
我应该担心 CPU 时间超过 5 小时吗?
【问题讨论】:
标签: wcf windows-services cpu
CPU time 表示自进程启动以来进程使用了多少处理时间(在 Windows 中:链接到 Technet article。)
基本上是这样计算的:
CPU Time of Process = Process Uptime * CPU Utilization of Process
例如,如果进程已经运行了 5 小时,而 CPU 时间为 5 小时,那么这意味着该进程一直在使用 100% 的 CPU 资源。这可能是好事也可能是坏事,这取决于您是想保持较低的资源消耗,还是想利用系统的全部功能。
如果进程使用 50% 的 CPU 资源并运行 10 小时,则 CPU 时间将为 5 小时。
【讨论】:
CPU 时间反映了您的程序在 CPU 中执行指令与等待 IO 或其他资源所花费的时间。您是否应该担心超过 5 小时?
我猜不是,需要考虑的一些事情是:
此进程运行了多长时间?
您对机器上的进程或其他进程的性能是否有任何问题,这可能会从中窃取 CPU?
您还有哪些其他流程?这些活动进程是您希望使用 CPU 的吗?作为 80 个进程的参考,我有大约 20 个使用了超过 1 秒的 CPU 时间。
编辑
WCF 服务可能正在从其他服务窃取 CPU,您需要监控它们以确保它们的性能符合您的预期。您还可以根据总 CPU 使用情况来了解情况。例如,如果您只看到 25% 的 CPU 被使用,那么您的其他服务不应该受到影响;但是,如果您的跑步率超过 75%,那么他们可能会受到影响。
在进行监控时,请务必随时监控,以便您了解性能趋势,这将帮助您隔离问题。例如,您的服务运行良好,但在部署后它慢慢开始占用越来越多的 CPU(假设每周 10%)。除非您对 CPU 使用率进行趋势分析,否则您可能有一天醒来并看到您的服务运行缓慢,这可能是部署后的数周。
【讨论】:
如果您担心您的进程使用了多少 CPU 时间,您应该使用perfmon 长时间跟踪您的进程的 CPU 使用情况,以确定您是否有问题。
【讨论】:
sysfs 计算转动核心on 和off 的时间有任何见解吗?
任务管理器中的 CPU 时间到底是什么?
答案很简单:
进程自启动以来使用的总处理器时间,以秒为单位。
【讨论】: