オペレーション兄弟!なぜ Kafka は再び「タイムアウト」したのでしょうか?

オペレーション兄弟!なぜ Kafka は再び「タイムアウト」したのでしょうか?

現象

早朝、運用保守チームが就寝したところ、ビジネス開発チームからの電話で起こされました。「おい!また Kafka サービスが異常だぞ?業務に影響するぞ、見てみよう」。ビジネス開発チームから提供された異常ログは次のとおりです。

ファンダメンタル分析

  • クラスター チェック: Kafka クラスターの正常性状態と関連トピックをすぐに確認します。クラスターの状態は正常、メッセージの送受信は正常、圧力負荷は正常です。トピックの読み書きは正常です。
  • 変更操作: 最近、Kafka に変更は加えられていません。変更の影響を確認します。
  • 影響範囲の決定:ケースバイケースの問題。問題の規模は現在のビジネスホストに限定されます。

パケットキャプチャ分析

基本的に例外がクラスターとは何の関係もないことを確認した後、次のステップはネットワーク関連の問題のトラブルシューティングを行うことです。ネットワークとシステム(カーネルパラメータ設定)は密接に関連しています。ネットワークの問題は複雑かつ謎に満ちています。後ほどシナリオに基づいて共有させていただきます。今日は主にネットワークリンクの問題を分析します。

  • tcpdump を使用してパケットをキャプチャします (クライアント側のパケット キャプチャ)。
 # 抓所有和kafka节点通信的网络数据包(因为数据量很大,在异常时抓取了几分钟的包) nohup tcpdump port 9092 -w kafka.pcap &
  • メッセージ分析。
  • エラーログ。
 2022-09-30 00:08:53.470 kafka/consumer.go:128 kafka_util,error,consume,group:cop.inke_owt.inno_pdl.user_pushmsg.server,from:user.msg.push.consume,topic:inno_phxyuyin_user_pushmsg_push_msg,err:kafka: error while consuming inno_phxyuyin_user_pushmsg_push_msg/1: write tcp 10.226.11.15:38742->10.226.5.4:9092: write: broken pipe
  • メッセージをフィルタリングします(10.226.11.15:38742->10.226.5.4:9092)。

  • メッセージ分析。
  • 477番目のメッセージから、つまり2022-09-30 00:07:06.387480から、データの送信はありません。クライアントは 5 秒ごとにハートビート パケット (TCP キープアライブ) を送信します。対話型メッセージから、それが非常に規則的であることがわかります (5 秒ごとに 1 つのハートビート パケットと 1 つの応答パケット)。
  • サーバーが 2022-09-30 00:07:56.467480 に 899 番目のメッセージに応答した後、次のハートビート パケット (00:08:01) までサーバーにハートビートは送信されませんでした。
  • 940番目のメッセージ、つまり2022-09-30 00:08:01.376174では、サーバーがクライアントにFINパケットを送信し(切断を要求)、クライアントもACKパケットで応答して切断を確認します。
  • 接続が切断された後、クライアントはこの接続でハートビート パケットを再度送信し、サーバーから応答パケットを受信します。プログラムはエラーを報告します (書き込み: パイプが壊れています) - パイプが閉じられており、書き込みが失敗します。

結果を分析する

  • 業務ホストのネットワークが不安定で、TCP ハートビート パケットが失われ、サーバーがそれを受信できませんでした。 00:08:06に再度送信したところ、接続が切断されました(この問題は最終的にメーカーにフィードバックされ、メーカーの技術スタッフからは、障害発生期間中にホストマシンに異常が発生し、ホストがホットマイグレーションを実行していたとの報告がありました。)
  • サーバーが 5 秒以内にクライアントのハートビート パケットを受信しない場合、サーバーは積極的に切断 (FIN) を開始します。接続が切断された後、クライアントは書き込み要求を送信するときに必ずパイプの破損を報告し、プログラム側に例外がスローされます。

知識の拡大

1. TCP KeepAlive メカニズムとは何ですか?

TCP 持続接続では、クライアントとサーバーの間で長時間データのやり取りが行われない場合、一方が異常な状況により接続を閉じても、もう一方はそれを認識できません。そこで、KeepAlive が導入されます。一定時間内に持続接続でデータ交換が行われない場合、接続の一方の当事者は、もう一方の当事者にキープアライブ検出パケットを送信します。接続が正常であれば、相手側が確認して応答します。

2. LinuxシステムでのKeepAliveカーネルパラメータの設定

# 允许的持续空闲时长,或者说每次正常发送心跳的周期net.ipv4.tcp_keepalive_time # 在tcp_keepalive_time之后,最大允许发送保活探测包的次数,到达此次数后直接放弃尝试,并关闭连接net.ipv4.tcp_keepalive_probes # 在tcp_keepalive_time之后,没有接收到对方确认,继续发送保活探测包的发送频率net.ipv4.tcp_keepalive_intvl

<<:  侵入することなく Kubernetes に OpenTelemetry プローブをインストールする方法を学びましたか?

>>:  サービスメッシュと OpenTelemetry の連携を探る: 分散トレース

推薦する

クラウド検索ベータ版オンライン体験

12月18日、元Google中国代表の劉軍氏が創設した雲雲検索のベータ版が正式にリリースされた。 3...

李開復: クラウド コンピューティング アプリケーションの 3 つの重要な前提条件

「クラウドコンピューティングとそこから派生したネットワークサービスは、ネットワークユーザーに確実に支...

ソフト記事を通じてウェブサイトのSEO最適化を実現するテクニックを分析する

ソフト記事には多くの機能があり、ウェブサイトの SEO 最適化を支援するのはその 1 つにすぎません...

Weiboを通じてウェブサイトのページ構築のデザインと詳細を分析する

プロのページ構築エンジニアとして、専門的なスキルに対する高い要件に加えて、設計図面をレビューする一定...

Terranode: ロサンゼルス VPS、月額 3.49 ドル、1G メモリ/2 コア (Ryzen9 7950X)/20g NVMe/1T トラフィック/10G 帯域幅/無料バックアップ

テラノードは2009年に設立されたとされる企業で、主にVPS事業を展開しており、データセンターは米国...

ウェブサイトを最適化する方法: ウェブサイトのスペースとドメイン名の選択

私はインターネット上でウェブサイトの最適化に関する多くのチュートリアルを読みました。ここではまず、ウ...

SouFun.comは報道に対する当局の疑問に答える:結論は間違っている

【捜狐ITニュース】4月23日、捜狐は本日、Glaucus Researchが発表した第3回質問レポ...

外部リンクによる降格: 外部リンクの色が背景色と同じにならないように注意してください

SEO に取り組んでいる友人は皆、ウェブサイトに外部リンクを追加することが、ウェブサイトの重みとキー...

クラウドネイティブ時代のエンタープライズマルチアクティブ災害復旧システムを構築するためのアイデアとベストプラクティス

[[409884]]クラウド ネイティブの概念を解釈するときに、マイクロサービスやコンテナについてよ...

ヘルスケアにおけるエッジコンピューティングと5Gの役割

テクノロジーは、診断、患者のケア、治療の実施方法を変えました。エッジ コンピューティングと 5G は...

DedecmsウェブサイトのホームページSEO最適化、99%の人がまだこの愚かな方法を使用しています

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスウェブサイトのホームペー...

ウェブサイトがオンラインになったときに、慌てて追加しないでください。サイトの最適化を整理することが最優先事項です。

多くのウェブサイト所有者がウェブサイトをオンラインにした後、最も望んでいることの 1 つは、ウェブサ...

外部リンクを最も効果的にする方法

外部リンクは古い話題です。外部リンクを投稿するときに混乱することがよくあります。高品質の外部リンクを...

ICTとクラウドコンピューティングの主なトレンドはエッジコンピューティングになる

[[388201]] Reply 社の新しい調査「クラウドからエッジへ」によると、2025 年までに...