「Javaアプリケーションのレイテンシー削減」
「美容とファッションのエキスパートが贈る、Javaアプリケーションのレイテンシー削減術」
私がアプリケーション開発のキャリアで取り組んだ難解で曖昧な問題の一つは、分散データ取得アプリケーションのレイテンシを改善することでした。
これは、最大の小売ウェブサイトの1つで製品広告を提供するために使用されるコンテナ化されたJavaアプリケーションでした。アイデアはレイテンシを低減して、特に高度な機械学習モデルを実行して試験することで、より良い広告を顧客に提供するための追加処理の余地を提供することでした。
私が使用したテクニックの一つは、JVMメモリ使用状況周りの活動に対する洞察を得るためのメモリ解析でした。些細なことのように聞こえるかもしれませんが、私は解決に時間がかかる大きな障壁を発見しました。結果として、それぞれの問題を克服し、アプリケーションのp99レイテンシを400msから240msに減少させることができました。
レイテンシの低減は私にとって新しいチャレンジであり、それに対処するための最適なツールが必要でした。オープンソースと有料の両方の多くのツールが利用可能でしたが、私は無料の中でもeclipseメモリ解析ツールMATが最も便利だと感じました。MATのインストールと使用方法については、多くの記事がありますので、ここでは詳細には触れません。
- 『中にFunSearch:GoogleのDeepMindの新しいLLM、新しい数学とコンピューターサイエンスのアルゴリズムを見つけることができる』
- このAI論文では、既知のカメラパラメータなしで新しい視点合成を行うために、COLMAP-Free 3D Gaussian Splatting(CF3DGS)を提案しています
- AIの物体認識をどのように進化させることができるのか? このAIの論文は、強化された画像と動画の分析のための普遍的な物体レベルの基礎モデルGLEEを紹介します
この記事では、大規模なプロダクションアプリケーションのメモリ解析に関連する課題とそれらの克服方法について説明します。
課題
- 大規模なアプリケーションのJVMヒープメモリのフットプリントは非常に大きく、私の場合は約100GBでした。このような大きなヒープダンプを解析するには、解析ツールを実行するために多くのメモリが必要であり、通常は通常のノートパソコンでは遅くなります。
- 大規模なヒープダンプは同等のディスクスペースを消費します。ディスクに十分なスペースがない場合、ヒープダンプのコマンドは失敗し、最悪の場合はルートパーティションを埋めてホストをクラッシュさせる可能性があります。
- ヒープダンプはストップ・ザ・ワールドのイベントです。ヒープダンプを取ると、アプリケーション内のすべてのアクティビティが停止し、サービスのヘルスチェックの失敗や終了につながる可能性があり、ヒープダンプファイルを取得することが困難になります。
解決策
- 大規模なヒープダンプの場合は、AWS EC2などの十分なメモリとディスクスペースを持つクラウドベースのリソースを使用することが最適です。
- ディスクスペースの問題を解決するには、アプリケーションがいくつかのクラウドリソースで実行されている場合、通常はそれに別のストレージが接続されています。ヒープダンプを取る前に、別のストレージを増やすことができます。
- アプリケーションが定期的なヘルスチェックで監視されているかどうかを確認します。たとえば、ロードバランサーの一部である場合は、ヒープダンプコマンドが開始された後に終了されないように、提供フリートから外す必要があります。
- 一定の間隔で複数のヒープダンプを取得して、サービスの状態の変化をキャプチャします。
改善策
- 最大の原因の一つは、インメモリキャッシュであり、過剰な保持ヒープを引き起こし、レイテンシに影響を与える頻繁なガベージコレクションを引き起こしていました。
- メモリ解析によって、データの検索に使用されるデータインデックスの使用方法に関する重要な手がかりが得られました。全体のインデックスがJVMヒープにロードされていて、またtmpfsに保存されており、必要なメモリの2倍を使用していたことがわかりました。これは不要であり、頻繁なガベージコレクションも引き起こしていました。
結論
大規模なプロダクションアプリケーションのメモリ解析は重要です。
アプリケーション内でのデータのキャッシュは有用かもしれませんが、時間の経過に伴う悪化については注意深く監視する必要があります。
ヒープダンプ解析は強力なツールです。正しいマシンとツールを使用すれば痛みが伴うこともあります。
ヒープダンプを取る際は、プロダクションアプリケーションのヘルスチェックルーティンに注意して、同じものを正常に収集する必要があります。
この記事では詳細には触れませんでしたが、より詳しい情報が必要な場合は、お気軽にメッセージを送ってください。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- 「このAI論文調査は、医学における大規模言語モデル(LLMs)の役割、課題、原則、応用について取り上げています」
- アップステージがSolar-10.7Bを発表:一回の会話用に深いアップスケーリングと微調整された精度を持つ先駆的な大規模言語モデルを実現
- このAI論文は、「パーシウス」という画期的なフレームワークを紹介していますこれにより、大規模な機械学習やAIモデルのトレーニング時のエネルギー浪費を最大30%削減することが可能です
- 「転移学習を探求しましょう…」(Ten’i gakushū o tankyū shimashou…)
- このAI論文では、ディープラーニングを通じて脳の設計図について探求します:神経科学とsnnTorch Pythonライブラリのチュートリアルから得た知見を活用してニューラルネットワークを進化させる
- このAIの論文は、マルチビュー映像を使用して3Dシーンダイナミクスをモデリングするための画期的な方法を紹介しています
- 自然言語処理:AIを通じて人間のコミュニケーションの力を解き放つ