「Javaアプリケーションのレイテンシー削減」

「美容とファッションのエキスパートが贈る、Javaアプリケーションのレイテンシー削減術」

私がアプリケーション開発のキャリアで取り組んだ難解で曖昧な問題の一つは、分散データ取得アプリケーションのレイテンシを改善することでした。

これは、最大の小売ウェブサイトの1つで製品広告を提供するために使用されるコンテナ化されたJavaアプリケーションでした。アイデアはレイテンシを低減して、特に高度な機械学習モデルを実行して試験することで、より良い広告を顧客に提供するための追加処理の余地を提供することでした。

私が使用したテクニックの一つは、JVMメモリ使用状況周りの活動に対する洞察を得るためのメモリ解析でした。些細なことのように聞こえるかもしれませんが、私は解決に時間がかかる大きな障壁を発見しました。結果として、それぞれの問題を克服し、アプリケーションのp99レイテンシを400msから240msに減少させることができました。

レイテンシの低減は私にとって新しいチャレンジであり、それに対処するための最適なツールが必要でした。オープンソースと有料の両方の多くのツールが利用可能でしたが、私は無料の中でもeclipseメモリ解析ツールMATが最も便利だと感じました。MATのインストールと使用方法については、多くの記事がありますので、ここでは詳細には触れません。

この記事では、大規模なプロダクションアプリケーションのメモリ解析に関連する課題とそれらの克服方法について説明します。

課題

  1. 大規模なアプリケーションのJVMヒープメモリのフットプリントは非常に大きく、私の場合は約100GBでした。このような大きなヒープダンプを解析するには、解析ツールを実行するために多くのメモリが必要であり、通常は通常のノートパソコンでは遅くなります。
  2. 大規模なヒープダンプは同等のディスクスペースを消費します。ディスクに十分なスペースがない場合、ヒープダンプのコマンドは失敗し、最悪の場合はルートパーティションを埋めてホストをクラッシュさせる可能性があります。
  3. ヒープダンプはストップ・ザ・ワールドのイベントです。ヒープダンプを取ると、アプリケーション内のすべてのアクティビティが停止し、サービスのヘルスチェックの失敗や終了につながる可能性があり、ヒープダンプファイルを取得することが困難になります。

解決策

  1. 大規模なヒープダンプの場合は、AWS EC2などの十分なメモリとディスクスペースを持つクラウドベースのリソースを使用することが最適です。
  2. ディスクスペースの問題を解決するには、アプリケーションがいくつかのクラウドリソースで実行されている場合、通常はそれに別のストレージが接続されています。ヒープダンプを取る前に、別のストレージを増やすことができます。
  3. アプリケーションが定期的なヘルスチェックで監視されているかどうかを確認します。たとえば、ロードバランサーの一部である場合は、ヒープダンプコマンドが開始された後に終了されないように、提供フリートから外す必要があります。
  4. 一定の間隔で複数のヒープダンプを取得して、サービスの状態の変化をキャプチャします。

改善策

  1. 最大の原因の一つは、インメモリキャッシュであり、過剰な保持ヒープを引き起こし、レイテンシに影響を与える頻繁なガベージコレクションを引き起こしていました。
  2. メモリ解析によって、データの検索に使用されるデータインデックスの使用方法に関する重要な手がかりが得られました。全体のインデックスがJVMヒープにロードされていて、またtmpfsに保存されており、必要なメモリの2倍を使用していたことがわかりました。これは不要であり、頻繁なガベージコレクションも引き起こしていました。

結論

大規模なプロダクションアプリケーションのメモリ解析は重要です。

アプリケーション内でのデータのキャッシュは有用かもしれませんが、時間の経過に伴う悪化については注意深く監視する必要があります。

ヒープダンプ解析は強力なツールです。正しいマシンとツールを使用すれば痛みが伴うこともあります。

ヒープダンプを取る際は、プロダクションアプリケーションのヘルスチェックルーティンに注意して、同じものを正常に収集する必要があります。

この記事では詳細には触れませんでしたが、より詳しい情報が必要な場合は、お気軽にメッセージを送ってください。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

データサイエンス

特定のドメインに特化した物体検出モデルの最適化方法

物体検出は、学術界から産業分野まで、広範な領域で広く採用されていますその理由は、低い計算コストで素晴らしい結果を提供...

AI研究

CMUとUCサンタバーバラの研究者は、心理療法における認知の歪み検出のための革新的なAIベースの「思考の診断」を提案しています

世界中で、約8人に1人が精神の問題を抱えています。しかし、精神保健障害は、心の専門家の不足、劣悪な治療法、高額な費用、...

AIニュース

「LlaMA 2の始め方 | メタの新しい生成AI」

イントロダクション OpenAIからGPTがリリースされて以来、多くの企業が独自の堅牢な生成型大規模言語モデルを作成するための...

データサイエンス

機械はジェンAIを使用してお互いに英語で対話すべきでしょうか?

「私たちの機械に英語で会話することを教えることで、アプリケーションやデータの統合に関するまだ解決策の見えていない課題...

データサイエンス

ChatGPTの応用:産業全体におけるポテンシャルの開放

チャットGPTの応用は、仕事や家庭のあらゆる分野で私たちの生活を変えつつありますしかし、どのようにビジネスはそれを成長に...

機械学習

PyTorch LSTM — 入力、隠れ状態、セル状態、および出力の形状

「PyTorchでは、LSTM(nn.LSTM()を使用)を使用するために、入力時系列を表すテンソル、隠れ状態ベクトル、セル状態ベクトル...