Tencent Games の DeepFlow に基づくゼロ侵入オブザーバビリティの高度な実践

著者: Feng Yafei/SRE エンジニア、Tencent ゲーム配信ライン技術運用チーム所属、Chen Zixin/Blue Whale 監視製品運用

Tencent は、自社開発の人気ゲームの開発に注力するだけでなく、より多くのプレイヤーがゲームの楽しさを楽しめるよう、世界中の有名なゲーム開発者と協力してこれらのゲームを市場に投入しています。これらのパートナーは世界中から集まり、さまざまなテクノロジー スタックを使用しているため、ゲームの安定性を維持するために複雑な課題が生じています。この記事の目的は、Tencent Interactive Entertainment が DeepFlow の eBPF テクノロジーを使用して非侵入的な可観測性を実現する方法を探ることです。この戦略は、ゲームの段階的なリリース プロセス中にスムーズなユーザー エクスペリエンスを保証するだけでなく、問題の診断と解決を迅速化し、潜在的な可能性を効果的に防止します。パフォーマンスの問題。

01 ゲーム背景紹介

「A Game」は海外のデベロッパーが開発し、Tencentが公開したゲームです。ゲームでは、Scala、Zio、Istio、CockroachDBなどのテクノロジー スタックが使用されており、これらのテクノロジー スタックにより、ゲームの起動、運用、メンテナンスがさらに複雑になり、課題が生じます。そして、プロジェクトの開始日が近づくにつれて、アプリケーションの可観測性を高めるためにコードを調整するのは現実的ではなくなり、開発チームはゲーム ビジネス コードの変更を必要としない可観測性ソリューションを緊急に必要としています。

このような背景に対して、チームは eBPF テクノロジーが必要な非侵入型ソリューションを提供できることを発見しました。 eBPF は特定のテクノロジー スタックに依存せず、サービス コール グラフの自動生成、リクエスト、エラー、遅延 (RED) インジケータの計算、コールの詳細の記録分散トレース リンクの自動生成を行うことができます。これに基づいて、ゲーム パブリッシング チームは Blue Whale モニタリング チームと協力し、eBPF テクノロジーを迅速に導入して、ゲーム ビジネス向けに知覚できないすぐに使えるアプリケーション可観測性機能を実現し、スムーズな立ち上げを保証する方法の検討を開始しました。ゲームの効率的な運営とメンテナンス。

テンセントゲームズ

02 プログレッシブリリース中のユーザーエクスペリエンスを確保する

「A Game」の正式リリースでは、慎重に設計されたプログレッシブ リリース戦略が採用されており、この戦略により、新しいバージョンをプッシュするユーザーの割合を段階的に増加させることができます (通常は 10%、50%、80%、100%)。 4つのステージ。プログレッシブ リリース戦略により、リスクを効果的に制御し、新しいバージョンをスムーズに起動できるようにし、最終的にはすべてのユーザーにより安定した優れたゲーム エクスペリエンスを提供できます。

プログレッシブ リリース戦略では、RED インジケーター(リクエスト レート、エラー レート、リクエスト期間) がリアルタイムで直感的なウィンドウを提供し、運用およびメンテナンス チームがサービス パフォーマンスに対する新しいバージョンの具体的な影響を即座に観察できるようになります。これらの指標を通じて、チームはユーザー ベースを拡大し続けるかどうか、パフォーマンスの最適化が必要かどうか、古いバージョンにロールバックするかどうかなど、データに基づいた意思決定を行うことができます。この種の洗練された制御の最終目標は、ビジネスの安定性と継続性を保護しながら、ユーザーが最高のゲーム体験を確実に得られるようにすることです。

現在、「あるゲーム」の各バージョンがリリースされた後、POD の新旧バージョンを比較する RED インジケーターの違いは、リリース プロセス中に検出リストに統合されています。インジケーター インジケーターの違いが重要でない場合は、これは、この更新によってパフォーマンスの低下や重大なエラー、負荷の不均衡、その他の問題が発生していないことを意味します。他のビジネス特性指標と組み合わせることで、サーバー全体の更新の実装を継続するかどうかを自信を持って決定できます。

赤のインジケーター

プログレッシブ リリース プロセス中に例外が発見された場合、要求されたAPI、パラメータ、応答時間、戻りステータス コード、およびその他の情報を呼び出しの詳細から迅速に特定できます。運用および保守担当者が問題を迅速に分析し、トラブルシューティングを行い、問題を解決できるように支援します。

通話詳細

同時に、完全に自動化された分散トレース機能を使用して潜在的なパフォーマンスのボトルネックを検出し、パフォーマンスのチューニングを実行し、システムの応答速度と安定性を継続的に向上させることができます。

分散トレーシング

03 実践的な戦闘: 新しいバージョンの CPU サージの隠れた危険性を排除する

「A Game」の開始後の数回のオンライン更新 (早朝 5:00 ~ 6:00 に集中) で、新しい構成テーブルがリリースされるたびに、クラスター サーバー全体の CPU 使用率が急増することが判明しました。 「クライアントがサーバーに対して DDoS 攻撃を開始したようです」を参照してください。

CPU サージ

「A Game」の動作特性から判断すると、サーバーの CPU はあまり多くの計算ロジックを処理する必要はなく、主な消費量はクライアントのリクエストまたはオンライン プレーヤーの数に応じて増加するだけです。以下の図のオンラインプレイヤー数の曲線からわかるように、ローンチ期間中に明らかな急激な増加は見られず、ビジネスへの影響はなかったと考えられます。

オンラインプレイヤーの数

一方、これらの疑わしい DDoS トラフィックは通常のクライアントによって開始されたリクエストであるため、セキュリティ チームの DDoS 保護システムはこれを通常のトラフィックとみなし、処理しません。以前は、この種のインフラストラクチャの CPU インジケーターの異常は通常、ここで終了していましたが、学生はアップグレード段階でアプリケーション ログを分析しようとしていましたが、量が大きすぎて明らかな進展が見られませんでした。プログラムが開始されると、より多くのビジネス ロジックが処理され、より多くの CPU が消費されるとしか考えられません

分析アイデアの比較表

eBPF 可観測性が開始された後、この種の問題は突然単純かつ簡単になりました。

ステップ 0 - 継続的な監視: アップグレード プロセス中、クラスターの QPS 傾向が継続的に監視されました。このとき、eBPF に基づいて自動的に取得されたイングレス ゲートウェイのリクエスト レート インジケーターが分析に使用され、QPS が急激に増加したことがわかりました。 10倍近く。基本的に、以前に発見された CPU の増加は QPS の突然の増加によるものであると結論付けられています。

リクエストレート

ステップ 1 - ドリルダウン分析: 次に、eBPF によって自動的に取得された通話の詳細を分析し続けます。URI 比率グラフを分析すると、70% 近くが特定のクライアントの SDK からのものであることがわかります。

URI比率グラフ

ステップ 2 - 根本原因の特定: eBPF の詳細なリクエスト ログまたはビジネス ログに基づいてさらに分析することができ、いずれの方法でも、分析する必要があるログの数が大幅に削減されました。ビジネス ログ内の URI に対応するログを検索したところ、gRPC リクエストの送信時にクライアント SDK によって伝えられたバージョンがサーバーのバージョンと一致していないことがわかりました。その結果、リクエストは拒否された後、常にサーバーによって拒否されました。 、クライアントが頻繁に再試行し、サーバー上で DDoS 攻撃が発生しました。研究開発部がこの問題を確認した後、すぐに修正されました。復旧後も継続監視を実施したところ、構成テーブル更新後のクラスタQPSの急激な上昇がなくなり、CPUも正常に動作することが確認され、隠れた重大な危険性を排除することに成功しました

さらに、Blue Whale チームと DeepFlow コミュニティは共同で、新しいバージョンでの gRPC ヘッダー フィールドのカスタム取得をサポートし、将来の同様の問題をさらに回避するために、クライアントのバージョン番号を表すメタデータを通話ログに抽出しました。

メタデータの抽出

概要: eBPF が提供するビジネスに依存しないリクエスト レートを使用して、クラスターの QPS の突然の増加を迅速に判断し、コールの詳細を使用して URI の異常を正確に特定します。わずか数ステップで、新しいバージョンのパフォーマンス リスクを検出できます。重大なオンライン障害が発生しました。

04 事例概要

この記事では、「A Game」の立ち上げ、運用および保守のプロセスを通じて、Tencent Interactive Entertainment が eBPF テクノロジーを使用して、複雑なテクノロジー スタックによってもたらされる課題に効果的に対処する方法を詳しく説明します。 DeepFlow の eBPF ベースのゼロ侵入オブザーバビリティ機能を導入することにより、トラブルシューティングと解決プロセスが高速化されるだけでなく、ゲームの安定性とユーザー エクスペリエンスも大幅に向上します

プログレッシブ リリース戦略を採用することで、各リリース段階でパフォーマンス指標を注意深く監視し、各アップデートがプレイヤーによりスムーズで安定したゲーム エクスペリエンスを確実に提供できるようにします。実際の事例では、eBPF テクノロジーにより、パフォーマンスの変化に迅速に対応し、潜在的な問題を効果的に特定して解決できるため、ゲームの継続的な運用とサービス品質が保証されることがわかります

最終的に、これらのテクノロジーの適用により、「A Game」のパフォーマンスと安定性を向上させることに成功しただけでなく、将来のゲームの運用とメンテナンスの新しいベンチマークを設定することもできました。これらの結果は、eBPF テクノロジーに基づく可観測性機能が、複雑な技術環境に対処し、ユーザー エクスペリエンスを向上させる上で大きな可能性があることを証明しています。

私たちは今後もより多くの技術革新と成功事例を探求し共有し、ユーザーにより良いゲーム体験を提供し、業界に貴重な洞察とソリューションを提供できることを楽しみにしています。

 

元のリンク: https://deepflow.io/blog/zh/059-tencent-games-achieves-zero-code-observability%20-based-on-deepflow/

GitHub アドレス: https://github.com/deepflowio/deepflow

DeepFlow デモにアクセスして、ゼロ インストルメンテーション、完全なカバレッジ、および完全に関連する可観測性を体験してください。 

仲間のニワトリがDeepin-IDE を 「オープンソース」化し、ついにブートストラップを達成しました。 いい奴だ、Tencent は本当に Switch を「考える学習機械」に変えた Tencent Cloud の 4 月 8 日の障害レビューと状況説明 RustDesk リモート デスクトップ起動の再構築 Web クライアント WeChat の SQLite ベースのオープンソース ターミナル データベース WCDB がメジャー アップグレードを開始 TIOBE 4 月リスト: PHPは史上最低値に落ち、 FFmpeg の父であるファブリス ベラールはオーディオ圧縮ツール TSAC をリリースし 、Google は大規模なコード モデル CodeGemma をリリースしました 。それはあなたを殺すつもりですか?オープンソースなのでとても優れています - オープンソースの画像およびポスター編集ツール
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/3681970/blog/11049317