我注意到在我开始使用@EnableScheduling
和@Scheduled
注释后,运行JVM的主机上的cpu使用率仍然很高。任何人都可以提供任何解释吗?阅读文档说它只有TaskExecutor
的一个线程,所以除非这个线程一直在运行,否则我看不到cpu的使用情况如何这么高。
@Scheduled
方法查询一个http api并平均得到大约20条json行,这些json行被转换为对象,然后存储到数据库中,当运行没有注释的方法并跟踪它周围的指标时AWS t2.medium上最差2秒。执行此方法时,cpu使用率会跳高,但在间隔期间,cpu使用率仍然很高。调度间隔为每30分钟。
答案 0 :(得分:-1)
尝试获取JVM的一些线程转储(例如,使用jstack)。您将看到每个线程正在做什么。如果你每10秒进行一次线程转储,并且你看到一个总是在同一段代码中的线程,那么这个问题很适合你。