Quartz .Net 导致 services.exe 导致 CPU 峰值 services.exe
Quartz .Net Causes services.exe to cause CPU spike on services.exe
我们使用 Quartz 构建的后台应用程序导致 Services and Controller App (services.exe)
使用高 CPU。应用程序本身使用可接受的范围 CPU(空闲时为 0-1%,作业触发时为 3-4%)和内存(最大 200MB)。但是每当触发作业时,services.exe
CPU 使用率会增加并导致服务器出现问题,从而阻止其他服务重新启动。
应用程序的一些见解:
- 大约 75 个作业,其中 5-10 个间隔 2 分钟,其余 运行 午夜。 (问题一直发生)
quartz.threadPool.threadCount = 10
quartz.scheduler.batchTriggerAcquisitionMaxCount = 100
- 使用 RAMJobStore
- 在 IoC 容器中使用单例模式。
感谢任何帮助。
发现我们的应用程序存在问题,并在此处写下任何通过此问题的人。至少它可以提供一些想法。
调查结果:
- Quartz .Net 与此问题无关。
- 我们的记录器扩充器正在尝试查询每个日志的服务名称。
- 此操作导致 service.exe 响应,因此也是高 CPU 的原因。
我尝试了几个 windows 分析器,但不幸的是,none 其中提供了足够或易于理解的信息。最后,尝试了 dotTrace,它向我显示了应用程序中的热点,然后在我的应用程序和 services.exe
之间建立关联就很容易了。
个人学习:
- 我试图在我的应用程序和
services.exe
之间建立关联,这必须是一个。但我的错误是专注于 Quartz .Net 以及如何在操作系统上管理线程。
- 尽管问题有所不同,但追求相关性对我来说是重点。没有火,没有烟。
谢谢。
我们使用 Quartz 构建的后台应用程序导致 Services and Controller App (services.exe)
使用高 CPU。应用程序本身使用可接受的范围 CPU(空闲时为 0-1%,作业触发时为 3-4%)和内存(最大 200MB)。但是每当触发作业时,services.exe
CPU 使用率会增加并导致服务器出现问题,从而阻止其他服务重新启动。
应用程序的一些见解:
- 大约 75 个作业,其中 5-10 个间隔 2 分钟,其余 运行 午夜。 (问题一直发生)
quartz.threadPool.threadCount = 10
quartz.scheduler.batchTriggerAcquisitionMaxCount = 100
- 使用 RAMJobStore
- 在 IoC 容器中使用单例模式。
感谢任何帮助。
发现我们的应用程序存在问题,并在此处写下任何通过此问题的人。至少它可以提供一些想法。
调查结果:
- Quartz .Net 与此问题无关。
- 我们的记录器扩充器正在尝试查询每个日志的服务名称。
- 此操作导致 service.exe 响应,因此也是高 CPU 的原因。
我尝试了几个 windows 分析器,但不幸的是,none 其中提供了足够或易于理解的信息。最后,尝试了 dotTrace,它向我显示了应用程序中的热点,然后在我的应用程序和 services.exe
之间建立关联就很容易了。
个人学习:
- 我试图在我的应用程序和
services.exe
之间建立关联,这必须是一个。但我的错误是专注于 Quartz .Net 以及如何在操作系统上管理线程。 - 尽管问题有所不同,但追求相关性对我来说是重点。没有火,没有烟。
谢谢。