オペレーション兄弟!なぜ 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 の連携を探る: 分散トレース

推薦する

釣魚島防衛事件におけるポジショニングの観点からSEOの限界について簡単に議論する

最近最もホットな話題の一つは、香港の釣魚島保護活動家らの上陸行動だ。 4月に始まった黄岩島事件を引き...

iQiyi と Bilibili は収益性の岐路に立ったのか?

長編動画プラットフォームはコンテンツをめぐる競争を何度も展開しており、著作権から自作ドラマまで金を燃...

優れたコピーライターになるための3つのステップ

人生は旅のようなものです。コピーライティングを職業として選んだということは、旅の目的を選んだというこ...

Alibaba Cloud ハイブリッドクラウド災害復旧サービスがオンラインになりました!

デジタル変革の潮流の中で、データは企業の中核資産とみなされ、データセキュリティをどのように確保するか...

ウェブマスターネットワークからの毎日のレポート:アリババはグループ購入のためにさらに80億ドルを調達し、より多くの人材を採用する

1. Sogou入力方式による検索トラフィックの「ハイジャック」の影響はユーザーエクスペリエンスに依...

2020~2025年のクラウドの5つのトレンド

[[314260]] 2020 年代が正式に始まるにあたり、Oracle は将来のテクノロジーとエン...

インターフェース監視用の Prometheus エクスポーターを開発する

ブラックボックス監視については皆さんもよくご存知だと思います。ブラックボックスの監視には black...

Xuan Jing Zhou Xing が「クラウド ネイティブでの IAST 実装の実践」について説明します。

クラウドネイティブテクノロジーは近年注目されており、ビジネスの革新と発展の重要な原動力となっています...

NameCheap: .com と他の 7 つのドメイン名を 0.88 ドルで登録

海外のドメイン名登録業者 Namecheap については、皆さんもよくご存知だと思いますので、早速本...

vpscreed-3日間半額/マネージドVPS/SSDハードドライブ

vpscreed はインド人が経営する会社で、データセンターは米国とドイツにあります。このプロモーシ...

FreeWheel: 技術の蓄積と人材の優位性が業界の優位性を生み出す

[51CTO.com オリジナル記事] オープンなワークスペース、緑の植物で覆われた壁、さまざまなス...

Ancestry.com が売却を検討中:情報筋

北京時間6月6日、外国メディアの報道によると、事情に詳しい情報筋は、米国の系図ウェブサイト「Ance...

コンティーノ:クラウドに完全移行している企業の普及率はわずか13%

最近、企業のデジタル変革に焦点を当てたコンサルティング会社が、既存のビジネスでクラウド サービスを広...

ウェブマスターのおすすめ: 使いやすく信頼性の高い「外国の仮想ホスト」 - 共有ウェブホスティング

昨今、VPS(クラウドサーバー)などの製品が大変人気ですが、かつての王者であった仮想ホスティング(安...

ファーウェイクラウド5Gイノベーションサミットが盛大に開幕、インターネット業界と手を携えて5Gイノベーション時代の到来を告げる

7月17日、東莞市松山湖ヨーロッパタウンでファーウェイクラウド2020インターネット5Gイノベーショ...