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

推薦する

インターネット企業がソフト記事の外部リンクを公開する方法を教えます

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますウェブサイ...

化粧品のウェブサイトを構築する際、インターネットを通じたマーケティングを実現するにはどうすればよいでしょうか?

化粧品の電子商取引が活発に発展するにつれて、オンラインマーケティングは化粧品マーケティングの話題の焦...

エッジコンピューティングをどのように活用して持続可能性を向上させることができるでしょうか?

エッジ コンピューティングの人気が高まるにつれ、過去数年間に繰り返し提起されてきた疑問は、「エッジ ...

宜聯網衣卸売が草の根フォーラムからの逆作戦を主導

ユー・ホアスタートアップIDスタートアップ企業:広州宜聯ネットワークテクノロジー株式会社創設者: ユ...

Scala を使用した Apache Kafka 開発に役立つベスト 20

この記事の著者は、20 人の開発者とデータ サイエンティストが Apache Kafka をどのよう...

ホワイトハット SEO を使用して短期間ですぐにランキングを上げるにはどうすればよいでしょうか?

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています高速ランキ...

DevOps がクラウド コンピューティングに影響を与える 5 つの領域

調査会社 Allied Market Research によると、DevOps 市場は 2023 年...

BandwagonHost: すべての VPS が 10% オフ、10Gbps (米国 cn2 gia + 日本 Softbank) + 1Gbps 香港 cn2 gia

今年、Banwagong はブラックフライデーのプロモーションも実施し、全商品が 10% オフになり...

違法な証券サイトや投資情報が後を絶たず、「無料」は欺瞞に過ぎない

原題: 欺瞞的な情報があちこちに飛び交い、あなたを罠に陥れるために「ダーツを投げている」最近、読者か...

バックエンドプログラマーに必須: 分散トランザクションの基礎

序文最近、分散トランザクションに関するブログ投稿をいくつか読んで、メモを取りました。ハハハ〜データベ...

パブリッククラウドにおけるDockerアプリケーション処理能力の評価

「クラウド」は、企業がデジタル変革プロセスを進める上で避けて通れないトピックです。近い将来クラウドに...

クラウド コンピューティングに必要な 5 つの機械学習スキル

機械学習と人工知能は、IT サービス分野に浸透し続け、ソフトウェア エンジニアが開発したアプリケーシ...

著作権登録は検索エンジンに任せよう

一昨日はオリジナルコンテンツの絶望についてお話ししましたが、今日は引き続き、オリジナルコンテンツの特...

このK8Sアーキテクチャ分析を書くのに10時間を費やしました

[51CTO.com からのオリジナル記事] インターネット技術の急速な発展に伴い、リクエストの高同...