Syn 攻撃は、最も一般的で最も簡単に悪用される攻撃方法です。TCP プロトコルの欠陥を利用して、偽造された TCP 接続要求を大量に送信します。多くの場合、偽の IP を使用して大量の SYN パケットが送信されます。攻撃を受けたサーバーは SYN+ACK で応答します。相手は偽の IP であるため、パケットを受信することはなく、応答しません。その結果、攻撃を受けたサーバーは SYN_RECV 状態で大量のセミ接続を維持し、デフォルトの 5 つの応答ハンドシェイク パケットを再試行し、TCP 待機接続キューをいっぱいにしてリソースを使い果たし、通常のビジネス要求が接続できなくなります。 Syn 攻撃はアプリケーション サーバーでよく発生し、データベース サーバーはイントラネット内にあるため、同様の攻撃に遭遇する可能性は低いです。ただし、アプリケーションがデータベースに正しく接続されていない場合、データベース側で Syn 攻撃とみなされ、接続が拒否されることがあります。 [問題の説明] データベースが突然接続を拒否し、アプリケーションがエラーを報告します。問題が発生したとき、データベース サーバーのオペレーティング システム ログ (/var/log/messages) に次のエラー メッセージが表示されます。
【問題分析】 問題が発生した時点で、データベース監視インジケーターから判断すると、Threads Connected インジケーターが増加しました。これも非常に明白です。データベースの場合、Syn Flooding は、アプリケーションが突然データベースへの接続を開始し、オペレーティング システムがそれを処理できないため、Syn Flooding を報告することを意味します。データベースのパフォーマンス インジケーターの観点から見ると、接続数は間違いなく急増します。解決策は、これらの突然の増加がどこから来ているのかを分析し、ピークを平滑化し、谷を埋めて、接続をより安定させることです。 【解決】 データベース サーバー側で、次の調整を行います。この調整は、TCP ハーフ接続バッファを増やすことを意味します。デフォルト値は 2048 ですが、突然の負荷に耐えるシステムの能力を高めるために 8192 に調整します。 Tcp_syn_retires と Tcp_synack_retires のデフォルト値は 5 です。これは、再試行を終了する前にサーバーが 5 つのパケットを送信する必要があることを意味します。このパラメータを 2 に調整します。再試行は 1 回だけなので、エラー パケットをできるだけ早く解決して、キャッシュされた接続の数を減らすことができます。
このパラメータ調整は再起動せずにすぐに有効になります。もちろん、サーバーを再起動すると、これらのパラメータはデフォルト値に戻ります。この調整により、データベースのストレス耐性は強化されましたが、問題は完全に解決されませんでした。 クライアント側でも対応する調整を行います。 データベース接続数への負荷を軽減するために、通常は接続プールを次のように構成することをお勧めします。
現在のシナリオでは、minIdle パラメータを 0 から 5 に増やすことをお勧めします。接続プールには通常 5 つのアイドル接続があるようにします。このようにして、データベースへの要求が開始されると、これらの 5 つのアイドル接続が最初に使用されます。山を削り谷を埋める効果を実現します。もちろん、副作用としてデータベース接続の数が増加します。適切な調整量は、実際のデータベース接続負荷に基づいて決定する必要があります。 .NET プログラムの場合、調整可能な対応する接続プール パラメータもあります。minPoolSize パラメータは適切に変更でき、5 に調整することもできます。 この調整を行うと、基本的にデータベースの Syn Flooding 問題の大部分は解決できます。 もちろん、これらはシステムをわずかに改善できるだけのチューニング方法にすぎません。ストレス耐性を向上させます。最終的な分析は、接続圧力がどこから発生するかによって異なります。そして、データベースへの大量の接続をバースト的に確立する必要がある理由。このような緊急事態にデータベースを使用することは適切でしょうか?別の方法としては、Redis を前面のバッファとして使用することです。データベースへの突然の接続要求を避けてください。これにはアプリケーションの変換が含まれます。 要約する 上記は、MySQL データベースの Syn Flooding の問題を解決するための編集者による紹介です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残していただければ、すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
<<: Vue Element-ui フォーム検証ルールの実装
環境: init_worker_by_lua、set_by_lua、rewrite_by_lua、a...
:not疑似クラスセレクターは、式に一致しない要素をフィルタリングできます。例 テーブル tbod...
1 実施原則これは、DOM 要素の dragstart/ondragover/ondrop イベント...
1. MySQLデータベースのエンコーディングを確認する mysql -u ユーザー名 -p パスワ...
ショートハンドプロパティは、複数のプロパティに同時に値を割り当てるために使用されます。たとえば、fo...
mysql マスタースレーブ構成1. 準備ホスト: 192.168.244.128スレーブ: 192...
コードをコピーコードは次のとおりです。 <html> <本文> <?p...
最初に書くこの記事では、ELK 7.3.0 の展開についてのみ説明します。展開環境:システムセントO...
レムの簡単な分析まず、remはCSS単位です。pxの固定ピクセル単位と比較すると、remはより柔軟性...
1. 仮想マシンバージョン15.5.1をダウンロードする公式サイトから直接最新バージョンをダウンロー...
達成される効果は、固定ズームが 2 倍になり、マウスが左側の画像領域に入るとマスク レイヤーが表示さ...
テストでは、ページ定義がutf-8でエンコードされている場合、 js ファイルに中国語などのマルチバ...
これまでの 3 つの記事では、論理バックアップと物理バックアップを含む、MySQL データベースの一...
目次1. 環境の紹介2. MySQL-8.0.19をインストールする3. MySQLを設定する1. ...
この記事では、パスワードボックスの検証情報を実装するためのJavaScriptの具体的なコードを例と...