1

我注意到,在我开始使用@EnableScheduling@Scheduled注释之后,JVM 正在运行的主机上的 cpu 使用率保持相当高。任何人都可以对此提供任何解释吗?阅读文档,它说只有 1 个线程TaskExecutor,所以除非这个线程一直在运行,否则我看不出 cpu 使用率怎么会这么高。

@Scheduled方法查询一个 http api 并平均返回大约 20 条 json 行,这些行被转换为对象然后存储到数据库中,当在没有注释和跟踪其周围的指标的情况下运行该方法时,在 AWS t2 上最多需要 2 秒。中等的。执行此方法时cpu使用率跳得更高,但在间隔期间cpu使用率仍然很高。调度间隔为每30分钟一次。

我指的文档: https ://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/annotation/EnableScheduling.htm

4

1 回答 1

-1

尝试对 JVM 进行一些线程转储(例如使用jstack )。您将看到每个线程在做什么。如果您每 10 秒进行一次线程转储,并且您看到一个线程始终位于同一段代码中,那么这就是您的问题的一个很好的候选者。

于 2015-11-30T08:21:04.137 回答