2015-11-30 117 views
0

我注意到,在我開始使用@EnableScheduling@Scheduled註釋之後,JVM運行的主機上的CPU使用率保持相當高。任何人都可以提供任何解釋嗎?閱讀文檔說,TaskExecutor只有1個線程,所以除非這個線程一直運行,否則我看不到cpu的使用率會如此高。Spring Scheduler cpu使用情況

@Scheduled方法查詢一個http api並平均得到約20個json行,它們被轉換爲對象然後存儲到數據庫中,當運行該方法時沒有註釋和跟蹤度量標準,它最少需要2秒在AWS t2.medium上。執行此方法時,CPU使用率跳轉較高,但在間隔期間,CPU使用率仍然很高。調度間隔爲每30分鐘一次。

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

+1

那麼......你的'@ Scheduled'方法做了什麼? –

+0

我不認爲問題出在Springs Scheduler基礎結構上,我認爲問題可能與您使用它的內容有關,因此請張貼一些代碼並解釋您嘗試實現的內容。 – Ralph

+0

你用什麼速度來安排? –

回答

-1

嘗試把你的JVM的幾個線程轉儲(含jstack爲例)。你會看到每個線程正在做什麼。如果你每隔10秒進行一次線程轉儲,並且你看到一個始終在同一段代碼中的線程,那麼這是你的問題的一個很好的候選者。

+0

僅供參考:在java應用程序的命令行中按[ctrl]與[pause/break]組合會創建一個線程轉儲 – Ferrybig