ホームページ  >  記事  >  データベース  >  MySQL と関連するタイムアウトの詳細な分析

MySQL と関連するタイムアウトの詳細な分析

小云云
小云云オリジナル
2017-12-22 13:27:451722ブラウズ

mysql ライブラリをクエリするとき、データ量が比較的大きい場合、セッションは常に中断されます。最初は、mysql と接続に関連するタイムアウトの問題だと思いましたが、ネットワークの不安定性が原因であることが判明しました。 この記事では主に MySQL と接続関連のタイムアウトについて詳しく紹介しますので、必要な方は参考にしていただければ幸いです。

以下は接続に関連するタイムアウトの概要です

slave-net-timeout

スレーブが接続が切断されたとみなして読み取りを中止し、試行するまでにマスターからの追加データを待機する秒数です。最初の再試行は、タイムアウトの直後に行われます。再試行の間隔は、CHANGE MASTER TO ステートメントの MASTER_CONNECT_RETRY オプションによって制御され、再接続の試行回数は、デフォルトの --master-retry-count オプションによって制限されます。は 3600 秒 (1 時間) です。
スレーブはマスターへの接続に問題があると判断すると、N 秒間待機し、その後切断してマスターに再接続します

net_read_timeout:

秒数サーバーがクライアントから読み取りを行っている場合、net_read_timeout は読み取りを中止する前に接続からデータを取得するまで待機する秒数です。サーバーはクライアントから読み取りを行っています。net_read_timeout は、いつ中止するかを制御するタイムアウト値です。データを読み取るとき、net_read_timeout はタイムアウトするタイミングを制御します。

net_write_timeout:

サーバーがクライアントへの書き込みを中止する前に、ブロックが接続に書き込まれるまで待機する秒数。net_write_timeout は、中止するタイミングを制御するタイムアウト値です。

書き込みを終了する前に接続へのブロックの書き込みを待機する秒数。サービスがクライアントにデータを書き込んでいるときに、net_write_timeout がタイムアウトするタイミングを制御します

wait_timeout

サーバーがアクティビティを待機する秒数非対話型接続を閉じる前に。

サーバーによって強制的に閉じられるまで、サーバーとの対話なしで接続を待機する時間

interactive_timeout:

対話型接続でサーバーがアクティビティを待機する秒数

サーバーとの対話がない接続がサーバーによって強制的に閉じられるまでにかかる時間

connect_timeout

mysqldサーバーが応答する前に接続パケットを待つ秒数不正なハンドシェイク。デフォルト値は 10 秒です。


接続応答を待つ時間


connect_timeout: 接続取得フェーズ (認証) で機能します

interactive_timeout および wait_timeout: 接続中に機能します。アイドルフェーズ (スリープ)

net_read_timeout および net_write_timeout : 接続 (クエリ) のビジーフェーズ中に機能します。

MySQL 接続の取得は、ユーザー名とパスワードの一致の検証に加えて、IP->HOST->DNS->IP の検証の結果として行われます。どのステップでもスレッドのブロックが発生する可能性があります。ネットワークの問題。スレッドが不必要な検証待機を無駄にしないようにするために、connect_timeout を超える接続要求は拒否されます。


ネットワークに問題がない場合でも、クライアントが常に接続を占有することはできません。 wait_timeout (または client_interactive フラグに応じて、interactive_timeout) よりも長くスリープ状態に留まるクライアントの場合、MySQL は積極的に切断します。


接続がスリープ状態にない場合でも、つまりクライアントがデータの計算または保存でビジー状態である場合でも、MySQL は条件付きで待機することを選択します。データ パケットの配信中に、クライアントが応答するには遅すぎる可能性があります (データ パケットの送信、受信、または処理が遅すぎる)。無限の待機によって接続が無駄にならないようにするために、MySQL は条件付きで接続をアクティブに切断することも選択します (net_read_timeout および net_write_timeout)。


関連する推奨事項:


JavaScriptのsetTimeoutのシングルスレッド

js関数の実行プロセスを確認するためのsetTimeoutの説明

jsのsetTimeout()関数

以上がMySQL と関連するタイムアウトの詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。