web-dev-qa-db-ja.com

ログ警告:スレッド不足またはクロックリープが検出されました(ハウスキーパーdelta = springHikariConnectionPool)

HikariCP 2.4.6を使用していますが、Tomcat 8の起動時に警告メッセージが表示されます。

01-Aug-2016 11:18:01.599 INFO [RMI TCP Connection(4)-127.0.0.1] org.Apache.catalina.core.ApplicationContext.log Initializing Spring FrameworkServlet 'Spring MVC Dispatcher Servlet'
[2016-08-01 11:18:01,654] Artifact blueberry:war exploded: Artifact is deployed successfully
[2016-08-01 11:18:01,655] Artifact blueberry:war exploded: Deploy took 33,985 milliseconds
Aug 01 2016 11:26:52.802 AM [DEV] (HikariPool.Java:614)
WARN : com.zaxxer.hikari.pool.HikariPool - 9m13s102ms - Thread starvation or clock leap detected (housekeeper delta=springHikariConnectionPool).

他のエラーや、DBからの読み取り/書き込みに関する問題は見当たりません。これは心配することですか?私は周りを検索してみましたが、運はありませんでした。

また、MySQL 5上でHibernate 4.3.8.Finalを使用し、Spring 4.1.0.RELEASEでMySQL 5.1.39コネクタを使用しています。 Hibernate 5へのアップグレードに取り組んでおり、これがなくなるかどうかを確認しますが、それが問題になるかどうかはわかりません。

20
bphilipnyc

私は、インスタンスにこの問題が表示されないように解決したHikariCPの少し新しいバージョン( 2.4.7 )があることに気付きました。

rundown クロックリープの検出が正当に行われる理由があります。 Brett Woolridgeによる外部リンクを引用するには:

これは、30秒ごとに実行されるハウスキーパースレッドで実行されます。 Mac OS Xを使用している場合、clockSourceはSystem.currentTimeMillis()であり、clockSourceが他のプラットフォームではSystem.nanoTime()です。理論的にはどちらも単調に増加していますが、NTPサーバーなど、さまざまなことが影響します。ほとんどのOSは、時間の前方への流れの錯覚を維持するために、NTP時間の後方調整を処理するように設計されています。

このコードは、時間が逆になった場合(現在<前)、または時間が2つ以上のハウスキーピング期間(「60秒」を超える)に「ジャンプ」した場合、奇妙なことが起こっている可能性があります。

いくつかのことが起こっている可能性があります。

  1. 仮想コンテナ(VMWare、AWSなど)で実行している可能性があります。何らかの理由で、時間の流れの錯覚を維持するという特に貧弱な仕事をしています。

  2. ハウスキーパースレッドで他のことが発生するため(具体的には、アイドル接続を閉じる)、何らかの理由で接続を閉じると、ハウスキーピングスレッドが2回(60秒)以上ブロックされる可能性があります。

  3. サーバーは非常にビジーであり、すべてのCPUが固定されているため、スレッド不足が発生しているため、ハウスキーピングスレッドが2つを超えるハウスキーピング期間実行できません。

これらを考慮して、追加のコンテキストを提供できます。

編集:これはHikariCP 2.4.1コードに基づいていることに注意してください。使用可能な最新バージョンを実行していることを確認してください。

(また、最新のコードの警告ステートメントでパラメーターが更新されたようです。)

19
bphilipnyc