2017-12-04 8 views
0

私はSpringブートJavaアプリケーションでマイクロサービスアーキテクチャをやっています。
私のスタートアップは約16-19秒ですので、私のclasspath/spring-bootアプリケーションがスタートアップのもので汚染されているようには見えません。Java Springの起動アプリケーションは、一晩中休止/休止状態になるのですか?

私はしばらくの間サービスを利用していませんでしたが。 FX。一晩中、私は再びそれを使用するとき、それはそれが要求をタイムアウトさせるいくつかの種類の休止状態に入ったようなものです。

類似した体験をお持ちの方、解決方法はありますか?

+0

私はこのような機能がないと確信しています:)多分、デッドロックや例外が発生するでしょうか? –

+1

いいえ、それはSpring Bootの機能ではありません。彼らは睡眠を必要としません。しかし、あなたの環境にもよりますが、多くの可能性があります。 1つの可能性は、GCがヒープを縮小し、他のいくつかのプロセスにメモリが与えられ、別の要求をするときにヒープを再成長させるためにメモリをスワップアウトする必要があるということです。 – Kayaman

+0

@Kayamanにはこれを防ぐための設定がありますか? :) –

答えて

2

Spring Boot固有の「ハイバネーション」機能はありませんが、長期間の非アクティブに反応するものはたくさんあります。データソースの「最小アイドル」接続からGCへの過剰な(一時的な)ヒープスペースを解放し、OSに戻します。

同じマシン上で実行されている他のメモリ空腹のサービスがある場合、Javaアプリケーションがその眠りから目を覚まし、ヒープを拡張したいと判断したときにスワップ競合が発生する可能性があります。 jstatを実行して、VMが異なる時点でどのような種類のメモリ使用量を持っているかを調べることができます。ここでは使用方法を文書化したhttps://www.cubrid.org/blog/how-to-monitor-java-garbage-collection/

スワップの問題ではないかもしれませんが、Java(またはSpring Boot)そのものだけでなく、何らかの形で環境に関係する可能性があります。