開発者は、問題の原因を特定するために、運用アプリケーションのパフォーマンスのボトルネックを確認する必要があることがよくあります。これを実行するには、多くの場合、ログやコード インストルメンテーションを通じて収集できる情報が必要になります。残念ながら、このアプローチは時間がかかることが多く、根本的な問題に関する詳細な情報が十分に提供されません。 現代的でより高度なアプローチは、プロファイリング技術とツールを適用して使用し、最も遅いアプリケーション コード、つまりリソースを最も消費する領域を強調表示することです。 この記事では、Pyroscope というオープンソース ツールを使用して、Kubernetes 上で実行されているマイクロサービスの継続的な分析とインストルメンテーションについて説明します。 Pyroscopeとは何ですか?コードを分析、デバッグ、レビューして、実行速度を上げる最も効果的な方法を決定する必要があります。プロファイリング ツールを使用してアプリケーションのコードを調べると、パフォーマンスのボトルネックを特定して修正するのに役立ちます。これにより、アプリケーションのパフォーマンスを迅速に診断できるようになり、プログラマーはパフォーマンス低下の核心の詳細まで掘り下げることができます。その結果、コードベースが合理化され、CPU/メモリの消費が削減され、ユーザー エクスペリエンスが大幅に向上します。 プロファイリングは、プログラムのメモリや時間の複雑さ、または関数呼び出しの頻度と期間を測定するプログラム分析の一種です。プロファイリング情報は、プログラムの最適化とパフォーマンスを支援するために使用されます。プロファイラー プログラムは、コードのすべての行を追跡できます。 継続的な分析トラブルシューティングをより迅速かつ簡単にする継続的なプロファイラー。 Continuous Profiler は、環境全体のコードレベルのパフォーマンスを時間の経過とともに分析できる実稼働コード アナライザーです。プロファイルは時間の経過とともに収集されるため、新しいコードが導入された後、最もリソースを消費する機能 (またはコード行) をすぐに明らかにすることができます。最適化により、エンド クラウド プロバイダー アカウントとユーザーの両方のレイテンシを削減できます。 連続分析装置とは何ですか?以下に、遭遇する可能性のあるアナライザーの一部を示します。
パイロスコープを使用する理由Pyroscope の調査を始める前に、市場で入手可能な他の継続的な分析ツールとどう違うのかを見てみましょう。 DataDog と Google Cloud Profiler は業界で広く使用されています。ある Reddit ユーザーが指摘したように、Pyroscope が他の 2 つよりも優れている理由はいくつかあります。 出典: Datadog、Google Cloud、Pyroscope の継続的分析機能の比較 Pyroscope は、分析データ専用のストレージ エンジンを構築し、データをできるだけ効率的に保存およびクエリすることに重点を置いています。プロキシ サーバー モデルを使用して、アプリケーションから Pyroscope サーバーに構成ファイルを送信します。 出典: Pyroscope はどのように機能しますか? Pyroscope を使用すると、任意の言語のパーサーがデータを送信し、ストレージ エンジンがそのデータを効率的に保存できるようになります。たとえば、Pyroscope には、Go、Python、Ruby、eBPF、Java、.NET、PHP、Rust 用の言語固有のエージェントがあります。 一方、Parca は少し異なるアプローチを採用しており、eBPF を利用して C、C++、Go などの言語をコンパイルします。執筆時点では、他の言語のサポートが進行中です。 Pyroscope と同様に、HTTP エンドポイントから任意の pprof 形式のプロファイルを読み取ることもできます。 理論的には、これらの言語はすべて最終的にコンパイルされてカーネル上で実行されるため、eBPF はこれらの言語のいずれでも動作するはずです。しかし、実際には、Python のようなインタープリタ型言語で eBPF を実行すると、関数名が人間には判読できない場合がよくあります。これは、シンボルがこれらの言語に保存されていないためです。 このため、Pyroscope は言語固有のアナライザーと eBPF アナライザーの両方をサポートしています。これには、カーネル レベルでのみ動作する eBPF と比較して、言語固有のエージェントを統合するための作業が若干多く必要になります。しかし、より実用的で人間が判読できる構成ファイルの利点も得られます。 Pyroscope をインストールするにはどうすればよいですか?
minikube を使用して Kubernetes クラスターを実行します。 minikube を使用してクラスターを作成します。 minikube スタート Helm チャート リポジトリを追加します。
Helm チャートをインストールします。 helm でpyroscope をインストールし、 pyroscope -io / pyroscope -- サービスを設定します。 タイプ= ノードポート Pyroscope Helm チャートが正常にインストールされたことを確認します。 ヘルムリスト Pyroscope が実行されているかどうかを確認します。 kubectl すべて取得 Kubernetes クラスターで Pyroscope が実行されるようになったので、アプリケーションを使用する手順に進みます。このデモでは Google マイクロサービスを使用します。 Google マイクロサービス デモを Pyroscope と統合するpyroscope バイナリを使用するようにコンテナ イメージを変更します。このバイナリはアプリケーションを起動し、監視のために自身を挿入します。詳細については、この Pyroscope のドキュメントを参照してください。 デモンストレーションには、Google Microservices の Python、Go、.NET マイクロサービスを使用します。すべての変更は GitHub の Google マイクロサービス ブランチにプッシュされます。各サービスの変更点を見てみましょう。 注: Google Microservices デモで Pyroscope を試すには、Docker イメージを自分でビルドする必要はありません。 「マイクロサービスから分析データを取得する」セクションに示されているように、Kubernetes マニフェストを適用するだけです。 (1)パイソン Python で記述された電子メール サービス アプリケーションを使用します。 Pyroscope で Python アプリケーションを使用するには、Dockerfile に次の変更を加える必要があります。 コピー-- from = pyroscope / pyroscope : 最新/ usr / bin / pyroscope / usr / bin / pyroscope Dockerfile を編集した後、同じフォルダーでイメージのビルドとプッシュに進みます。 docker ビルド。 -t beellzrocks / emailservice : 最新 (2).NET .NET 用の Cart Service アプリケーションを使用します。 Pyroscope で .NET アプリケーションを使用するには、Dockerfile に次の変更を加える必要があります。 コピー-- from = pyroscope / pyroscope : 最新/ usr / bin / pyroscope / usr / bin / pyroscope Dockerfile を編集した後、イメージのビルドとプッシュに進みます。 (3)行く Go で記述された製品カタログ サービス アプリケーションを使用します。 Go アプリケーションを Pyroscope で使用するには、server.go に次の変更を加える必要があります。 輸入( server.go を編集した後、イメージのビルドとプッシュに進みます。 マイクロサービスから分析データを取得するPyroscope でイメージを使用するために Kubernetes マニフェストを変更しました。 kubernetes-manifests.yaml ファイルには、すべてのアプリケーション リソースが含まれています。上記の手順で構築したイメージ、つまり電子メール サービス、ショッピング カート サービス、製品カタログ サービスを使用するように編集しました。 コンテナ: Kubernetes で Pyroscope を実行する場合は、次の変更を加える必要があります。
コンテナ: これで、すべてのサービスをデプロイするために、Kubernetes マニフェストをクラスターに適用できます。 kubectl apply -f https://raw.githubusercontent.com/infracloudio/microservices-demo-dev/master/release/kubernetes-manifests.yaml Pyroscope サービスの URL を取得します。 minikube サービスパイロスコープ | -- -- -- -- -- | -- -- -- -- -- | -- -- -- -- -- -- | -- -- -- -- -- -- -- -- -- -- -- -- -- -- - | Pyroscope UI にアクセスするには、次の URL にアクセスします: http://192.168.49.2:30639 (上記のフィードバックに基づいて実際のアドレスを開きます)。 Pyroscope サーバー CPU を備えた Pyroscope UI 上のスクリーンショットからわかるように、Pyroscope 自体は、データをローカルに保存するときに CPU をほとんど使用しません。 Badger データベースを使用してデータをローカルに保存します。 パイロスコープのリソース利用Kubernetes ポッドの監視は、リソースの使用状況、利用率、コスト管理の観点からも重要です。 Pyroscope は使用するリソースが少なく、オーバーヘッドも低くなります。 Pyroscope の CPU 使用率 パイロスコープによる監視Pyroscope は、プログラミング言語に応じて異なるエージェントを使用してコードを分析します。以下は、Pyroscope を使用したプロファイリング アプリケーションからのフレーム グラフの例です。 Go 製品カタログ サービス アプリケーションを備えた Pyroscope Pyroscope と .Net カート アプリケーション Python メール アプリケーションを備えた Pyroscope 結論は継続的な分析パフォーマンスは、エンドユーザーの期待に応えるための重要な要素です。パフォーマンスの問題が発生した場合は、エンドユーザー エクスペリエンスに影響する前に問題を診断する準備をする必要があります。 したがって、Pyroscope などのツールを使用して、アプリケーションを最適化し、問題を解決し続け、ユーザーに超高速のアプリケーション パフォーマンスを提供し続けましょう。 Pyroscope は、実稼働環境でコードのパフォーマンスを向上させ、クラウド インフラストラクチャのコストを削減する方法を理解するのに役立つ可視性のレイヤーを公開します。 |
<<: ロシア・ウクライナ戦争のIT暴露:我が国のITと財政自立の価値と難しさ
>>: 中国のクラウドコンピューティング戦争:外国のクラウドの衰退の簡単な歴史
Cloud Native Computing Foundation (CNCF) は、Linux F...
ドメイン名投資はウェブマスターコミュニティの導火線に火をつけました。多くのウェブマスターがこのアイデ...
すべてのマーケティング活動と同様に、検索プロモーションやプロジェクトを準備する際の最初のステップは、...
さらに読む:タオバオの「注文ブラッシング軍」の秘密を暴く:9分間ブラッシングすると5元が稼げる最近、...
ウェブサイトのランキングは重要ですか? SEO 担当者であれば、その答えはご存知でしょう。それは重要...
この記事は私のブログのSEO日記第23弾です。最近はお店の経営が忙しくて本当に疲れていますが、面白い...
自分のウェブサイトに外部リンクを構築している友人は、この質問を持っているはずです。私の外部リンクは効...
Hosthatchは英国ロンドンで独自のVPSクラウドサーバー事業を展開しており、安価で費用対効果が...
2年前、大規模な不動産フォーラムで潘軍氏は網易不動産に「アップルから学びたい」と語った。一昨年、彼は...
シュガーホストは香港データセンターのVPSの構成をアップグレードすると発表しましたが、価格は変更あり...
SEO 最適化作業で最も重要なのはコンテンツと外部リンクです。初期の頃は外部リンクを貼るのは簡単で、...
みなさんこんにちは。私は湖南省出身のキネスです。今日は、企業のウェブサイト最適化計画を作成する際に考...
[要約] 秘密権使用者の特徴は、若く、教養が高く、活力があり、新しいものを好むことです。彼らは家にこ...
META タグは、HTML 言語のヘッダー領域にある補助タグです。作成者、日時、Web ページの説明...
Cloud Native Computing Foundation (CNCF) は、6 回目となる...