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

推薦する

ローカル人材ウェブサイトのコア競争力の欠如という現象を打破する方法

地元の人材ウェブサイトは、雇用や採用を促進するための優れた基盤を築いてきましたが、雇用圧力が高まるに...

3月の第2週、中国は.COMドメイン名の総数で2位となり、6,621,677に達した。

IDC Review Network (idcps.com) は 3 月 21 日に次のように報告し...

friendhosting: バレンタインデーの「無制限トラフィック VPS」が 55% オフ、世界中に 8 つのオプション データ センター、PayPal\Alipay

ブルガリアのホスティングプロバイダー「friendhosting」は、毎年恒例のバレンタインデープロ...

エッジ要素: SEOは前進し、革新し続ける必要がある

前回の「SEO初心者向け本」コンテストが終了してから1週間以上が経ちました。北京に到着した翌日に、Q...

WordPressのリンク管理の削除からSEOの今後の動向がわかる

12月12日にWordPressがメジャーアップグレードされ、バージョン3.5「Elvin」にアップ...

最近サイトが不安定になっています

先週の金曜日から、ホスト猫は他の人、CC+DDに攻撃されています。中国の商人は非常にひどいので、問題...

電子書籍を販売し、年間数億ドルを稼ぐ、私が今まで見た中で最もすごい人(パート 2)

関連記事: 電子書籍を販売し、年間数億ドルを稼ぐ、私が今まで見た中で最も素晴らしい人物 (パート 1...

Baidu によってウェブサイトの順位が下げられるとどうなりますか?

多くの初心者は、SEO 最適化を行う際に、自分の Web サイトが降格されることを常に心配しています...

edgenat: 元旦特別オファー、すべての VPS、韓国 cn2、アメリカ cn2、アメリカ AS4837 の年間支払いで 30% オフ、月払いで 20% オフ

Edgenat は現在、クリスマスと新年の休暇に向けて、年間支払いで 30% 割引、月払いで 20%...

ユーザーエクスペリエンスについてどのように理解していますか?

ウェブサイトの神様とは何でしょうか? もちろん、それはユーザーです。ウェブサイトは実店舗のようなもの...

GoogleのPRアップデートが私の意に反して行われた後の私の考え

2012年の元宵節の日に、ホリデーパーティーの最中にGoogle PRが更新され、私たちの自動車改造...

0から1までのブランドマーケティング戦略!

企業の試行錯誤の期間において最も重要な 2 つの側面は何ですか?戦略的原点期の3つの主な特徴は何です...

Weiboマーケティングプランの立て方

誰もがWeiboマーケティングに馴染みのない時代ではなくなりましたが、Weiboマーケティング計画を...

ウェブサイトのトラフィックを増やすために適切なキーワードを選択する

1999 年 9 月、Brett Tabke 氏は Webmaster World フォーラムに「1...

#BlackWeek5#-バーチャルホスティング、特別プロモーション、概要投稿

ホストキャットの年の感謝祭、ブラックフライデー、サイバーマンデーの10日間のバーチャルホスティングプ...