MySQL thread_stack 接続スレッドの最適化

MySQL thread_stack 接続スレッドの最適化

MySQL は、ネットワーク経由だけでなく、名前付きパイプ経由でも接続できます。MySQL への接続にどの方法を使用するかに関係なく、すべてのクライアント要求は MySQL のスレッドによって管理されます。各クライアント接続には対応する接続​​スレッドがあります。 MySQL には、リクエストの完了後にアイドル状態の接続スレッドを破棄するのではなく保存するためのスレッド キャッシュ プールが実装されています。このように、新しい接続要求があると、MySQL はまずスレッド キャッシュにアイドル接続スレッドがあるかどうかを確認します。ある場合は、それを取り出して直接使用します。アイドル接続スレッドがない場合は、新しい接続スレッドが作成されます。具体的なパラメータ:
Thread_cache_size: スレッド キャッシュ プールに保存する接続スレッドの数。
Thread_stack: MySQL が各接続スレッドの作成時に割り当てるメモリ サイズ。 MySQL が新しい接続スレッドを作成する場合、クライアントが要求したクエリと独自のさまざまなステータスおよび処理情報を保存するために、一定量のメモリ スタック領域を割り当てる必要があります。
接続スレッドに関連するシステム変数の設定値を表示します。「thread%」などの変数を表示します。

mysql> 'thread%' のような変数を表示します。
+-------------------+--------+
| 変数名 | 値 |
+-------------------+--------+
| スレッドキャッシュサイズ | 32 |
| スレッドスタック | 196608 |
+-------------------+--------+
セット内の 2 行 (0.00 秒)

図に示すように、システムはスレッド キャッシュ プールを最大 25 個の接続スレッドをキャッシュするように設定します。各接続スレッドが作成されると、システムは 192 KB のメモリ スタックを割り当てます。
システムが接続された回数と現在のシステムの接続スレッドのステータス値を表示します。

mysql> 'connections' のようなステータスを表示します。
+---------------+-------+
| 変数名 | 値 |
+---------------+-------+
| 接続 | 620 |
+---------------+-------+
セット内の 1 行 (0.00 秒)

mysql> '%thread%' のようなステータスを表示します。
+------------------------+-------+
| 変数名 | 値 |
+------------------------+-------+
| 遅延挿入スレッド | 0 |
| 遅い起動スレッド | 0 |
| キャッシュされたスレッド | 3 |
| スレッド接続数 | 4 |
| 作成されたスレッド | 7 |
| 実行中のスレッド | 1 |
+------------------------+-------+
セット内の 6 行 (0.00 秒)

システムが起動してから、620 のクライアント接続を受信し、7 つの接続スレッドを作成しました。現在、1 つの接続スレッドがクライアントに接続されており、3 つの接続スレッドのうち 1 つだけがアクティブ状態にあります。つまり、1 つだけがクライアントから送信された要求を処理しています。合計 3 つの接続スレッドがスレッド キャッシュ プールにキャッシュされます。

スレッドキャッシュヒット率:
Thread_Cache_Hit = (接続数 - Threads_created) / 接続数 * 100%;
通常、システムが一定期間安定して稼働した後は、スレッド キャッシュのヒット率が 90% 程度に維持されていれば正常とみなされます。

実用例:

16G/32Gマシンの場合、通常512Kが設定されます

もちろん、次のエラー メッセージが表示された場合は、この値を増やすことを検討する必要があります。

mysql-debug: スレッド スタック オーバーラン

バグ情報

エラーメッセージ:
java.sql.SQLException: スレッド スタック オーバーラン: 131072 バイトのスタックのうち 5456 バイトが使用されており、128000 バイトが必要です。より大きなスタックを指定するには、「mysqld --thread_stack=#」を使用します。

公式対応情報:

デフォルト(192KB)は通常の操作には十分な大きさです。スレッドスタックのサイズが小さすぎると、サーバーが処理できるSQL文の複雑さ、ストアドプロシージャの再帰の深さ、その他のメモリを消費するアクションが制限されます。

使用可能

show variables where `variable_name` = 'thread_stack';

現在のデータベースのデフォルトのスレッド スタック サイズを照会します。通常は正常に使用できます。ただし、クエリ ステートメントまたはストアド プロシージャが複雑な場合は、スレッド スタック オーバーラン エラーが報告されます。この場合は、デフォルトの構成を変更するだけです。

解決する

Windows: MySQL インストール ディレクトリの my-small.ini または my.ini ファイルを 256k 以上に修正し、サービスを再起動します。

[mysqld]
スレッドスタック = 256k
linux: 設定ファイルも変更する必要がありますが! ! !インストールディレクトリの設定ファイルではなく、/etc/my.cnfです。このファイルのみが有効になり、サービスservice mysql restartを再起動します。

[mysqld]
スレッドスタック = 256k

以下もご興味があるかもしれません:
  • MySQL パフォーマンス最適化設定パラメータ thread_cache と table_cache の詳細な説明
  • Mysql エラー コード: 1436 スレッド スタック オーバーラン
  • mysql - パラメータ thread_cache_size 最適化方法の概要
  • Mysql の最適化とチューニングにおける 2 つの重要なパラメータ: table_cache と key_buffer
  • MySQL キャッシュの起動方法とパラメータの詳細 (query_cache_size)
  • MySQL パフォーマンス最適化のための table_cache 構成パラメータの分析
  • mysql 最適化のための重要なパラメータ key_buffer_size table_cache
  • mysql key_buffer_size設定を最適化する
  • mysql key_buffer_sizeパラメータの最適化設定

<<:  Linux で複数のファイルの名前を一度に変更する方法

>>:  js は、Element の入力コンポーネントのいくつかの機能を実装し、それをコンポーネントにカプセル化します (サンプルコード)

推薦する

PHP スケジュールバックアップ MySQL および mysqldump 構文パラメータの詳細

まず、MySQL バックアップ コマンド mysqldump の一般的な操作例をいくつか紹介します。...

uniapp プロジェクトをデスクトップ アプリケーションとしてパッケージ化する方法

Electronのインストール cnpm 電子をインストール -g electron-package...

ウェブサイトのコンテンツの一部を傍受するための iframe を実装するためのアイデアとコード

コードをコピーコードは次のとおりです。 <div スタイル="幅:630px;高さ:...

HTML_PowerNode 入門 Java アカデミー

HTMLとは何ですか? HTML は Web ページを記述するために使用される言語です。 HTML ...

MySQL でプロファイルを使用する方法のチュートリアル

プロフィールとは何ですか?特定の SQL のパフォーマンスを分析したい場合に使用できます。プロファイ...

Baota LinuxパネルにFTP接続できない問題の解決方法の詳細な説明

Alibaba Cloud Server を使用している場合は、セキュリティ グループ設定でポート ...

ウェブデザイン経験

<br />著者はかつてWebデザインの初心者でしたが、継続的な探求と実践を通じて、今で...

最新のmysql-5.7.21のインストールと設定方法

1. ダウンロードしたMySQLの圧縮パッケージをインストールディレクトリに解凍します。 2. 新し...

Mac OS に MySQL 5.7.20 をインストールするための詳細なグラフィックとテキストの説明

Mac OS X で TAR.GZ から MySQL 5.7 をインストールする MySQL 5.6...

Linux で大容量メモリ ページを持つ Oracle データベースを最適化する方法

序文PC サーバーは今日まで発展を続け、パフォーマンスにおいて大きな進歩を遂げてきました。 64ビッ...

JavaScript コードベースをよりクリーンにする 5 つの方法

目次1. 短絡や条件文の代わりにデフォルトのパラメータを使用する2. 複数の条件の処理3. スイッチ...

vue構成ファイルはルーティングとメニューインスタンスコードを自動的に生成します

目次前面に書かれたルータ.jsonルート生成メニュー生成効果要約する前面に書かれたルートを繰り返し記...

Nginxの書き換えモジュールの詳細な説明

書き換えモジュールは ngx_http_rewrite_module モジュールです。その主な機能は...

el-table カプセル化に基づくドラッグ可能な行と列、および選択列コンポーネントの実装

効果環境が必要ビュー要素UIドラッグアンドドロッププラグインSortable.js必要な構成プロパテ...