私は、Akka-HTTP(https://github.com/theiterators/akka-http-microservice)とScalaを使用して書かれたAWSサーバー上のドッカーコンテナにマイクロサービスを展開しました。 AWSサーバーにサービスをデプロイすると、メモリリークの問題&のパフォーマンス上の問題に直面しています。(Scala + Akka HTTP)マイクロサービスでのメモリリークの問題
サーバが要求数(340MB、410MB、422MBなど)を増やしたときにメモリ使用量が増加したことに気付きました。&は負荷に応じて自動的に通常状態(230MB)になりました。しかし、サーバーが要求数を増やし、CPU使用率が通常の段階に達した後でも未使用のメモリーを解放できず、最終的に最大(512MB)に達してクラッシュすると、メモリー使用量は増加し続けます。
未使用のメモリ/リソースを適切にクリアした場合、これを回避できます。 JVMは、ガベージコレクタを使用してメモリ使用量を処理する必要があります。しかし、要求が処理されると、不要なメモリ(オブジェクト)を消去することができませんでした。私はAkka.HTTPアクターオブジェクトをクリアするために、以下のコードを使用しています。
try {
<-- code block -->
} catch {
case e: Exception =>
sys.addShutdownHook(system.shutdown())
} finally {
sys.addShutdownHook(system.shutdown())
}
実行プロセスが完了した直後に、未使用のメモリ/リソースを削除するにはどうすればよいですか?
私たちにとって非常に重大な問題であるため、この問題をできるだけ早く解決するための解決方法を教えてください。
この質問に意味のある回答をすることは非常に難しいですか? SO提案(https://stackoverflow.com/help/mcve) –
のように、最小、完全、および検証可能な例を作成することを検討してください。512MBのサウンドは、スカラーWebサービスを実行するための実際の小さなヒープのようなものです。 もっと多くのヒープ(例えば2g)を与え、それがあなたの問題を解決するかどうかを確認してください。 – Dima
akka-httpのどのバージョンはそれでしたか?昨年、メモリリークを修正しました。 – jrudolph