2016-09-01 7 views
2

私はSpark Java 2.5に基づいて休憩サービスを提供しています。 私の問題は、一定のパフォーマンスでは動作せず、突然、CPUをメモリに交換し、後でその逆を行うことです。 Here are the plotsJettyサーバーが予期せずCPUとメモリを交換し、その逆の場合

プロットはJava melodyを使用して作成されます。 ご覧のとおり、18時頃にパフォーマンス・プロットが突然変更されました。メモリ消費量が増加し始め、プロセッサの負荷が低下しました。同時に、要求待ち時間は変更されず、1秒あたりの要求数と要求タイプも変更されました。追加のパラメータも変更されました。特に、バッファされたメモリと開かれたファイルの数が使用されました。

1週間後にすべてが元に戻って、2週間後または1ヶ月後にサイクルが繰り返され、私はこのサイクルを過去3ヶ月間見た。

私はプロファイラを使用しようとしましたが、役に立たないものは見つかりませんでした。

ウェブサーバーとのユーザーのやりとりは何も変更されず、バックグラウンドタスクもアクティブではないため、このような変更はビジネスロジックによって引き起こされることはありません。おそらく、桟橋やJavaの内部や設定ミスです。

サーバは、AWS EC2のDockerコンテナ(Javaでは、ドッカーの自動拡大にAWS ECSを使用)でJava 8で動作します。 1秒あたり約50要求がロードされます。 API自体はpostgresql 9.4ドライバで春と冬眠を使用します。休止状態の2番目のレベルのehcacheが使用されます。 apiリクエストの中には、約100kbのマルチパートでリクエストのタイムライン上に一様に配信されるものがあります。 Javaはパラメータ-server -Xmx6000m -XX:+ UseG1GCで起動します。詳細が必要な場合は、私に尋ねてください。

私が望むのは、一定のパフォーマンスです。私の問題があなたの経験に共鳴するなら、返信してください。

ps:〜23:30変更は問題に関連していないため、分析しないでください。

+0

GCログをキャプチャして、そのJVMだけがGCを実行中であるかどうかを確認したい場合があります。 –

+0

いいえ、それはGCではない、私はそれを調査した。動作変更後、GCは前と同じように動作します。 – user3231055

答えて

0

最後に、解決策は簡単でした。動作が停止した後、-Xmsを500MBに増やすことができました。

関連する問題