オペレーション兄弟!なぜ 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を学ぶ際に初心者が知っておくべきこと

厳密に言えば、蘇州 SEO の Lao Ding は実は初心者です。彼は SEO に 8 か月近く関...

bigbrainglobal-生涯60%割引/Onapp

Bigbrainglobal は、米国バージニア州に拠点を置く高品質のプライベート IDC です。現...

#完全マネージドホスト# hostdime-20% 割引/英国データセンター/VPS+専用サーバー

多くの中国人はhostdimeに馴染みがないかもしれません。同社は2001年に設立され、2003年に...

#11.11# 馬華クラウド: 香港 CN2 クラウド サーバーは月額 9 元から、安徽モバイル BGP クラウドは月額 29 元から

Mahua Cloud(2007年に設立されたと主張)は現在、香港の将軍澳でのAnhui Mobil...

マイクロサービスアーキテクチャの欠点

クラウド アプリケーション開発のためのマイクロサービス アーキテクチャは、疎結合された小さな (「マ...

Baidu Shareが突然消えたが、それは一時的なものではない

最近ウェブマスター界隈で話題になっていた百度シェアが、急に効力が弱くなった。このウェブサイトの背後に...

会社の上司はウェブサイトの運営にどのように関与すべきでしょうか?

中国では、多くの中小企業が社内のウェブサイト運用の重要性を認識しているものの、実際の運用は十分とは言...

無料で実用的な越境ECソフトウェアのおすすめ④-SEOキーワードランキング追跡ツール

プラットフォームを構築する場合でも、独立した Web サイトを構築する場合でも、商品を適切な位置に表...

spinservers: 米国サーバー (超高構成 + 無制限トラフィック)、月額 199 ドル、2*e5-2683v4 (36 コア/72 スレッド)/512GDDR4/4*1.6TSSD/10Gbps 帯域幅

spinservers は、特別価格の無制限トラフィックの米国独立サーバー 2 台をリリースしました...

ウェブマスターは自動外部リンクを使用する際には注意する必要がある

ここ数日、Nian Bin は多くの SEO 担当者が「自動外部リンク ツール」や「自動外部リンク」...

推奨: host1plus-32 USD/年払い/768M メモリ/60g ハードドライブ/1T トラフィック/5 コンピュータ ルーム/Alipay

アフリカで VPS を希望する人はいるでしょうか?南アフリカのコンピューター室ですか? host1p...

8年間の経験、SEOをより効率的にする5つの最適化のヒント

私が誤ってウェブマスターになった2005年から、この8年間は何度か経過しましたが、私はインターネット...