にわかサーバー屋さんの覚書

サーバー系を担当しているけど、設計などは日々勉強中のプログラマの覚書

MySQL - 接続数が多いときの設定(同時接続とスレッドキャッシュ)

MySQLに接続数が多いときの設定の覚書

 

MySQLはクライアントから接続の度にスレッドを作って、

処理してはクライアントに返して、スレッドを破棄します。

 

そこで、サーバーにアクセスが多い場合に、調整するのがいい項目があったりします。

 

同時接続数

MySQLに同時に接続できる台数があり、それを超えると。

[1040] Too many connections と怒られます。

 

確認

SHOW STATUS LIKE 'Max%';

※長いのでこんなのでいい

+----------------------+-------+

| Variable_name        | Value |

+----------------------+-------+

| Max_used_connections | 1     |

+----------------------+-------+

このパラメータどれだけ接続数があるか確認。

 

my.conf

max_connections

※デフォルトは100

300にする場合

max_connections=300

  

接続増やすと作成されるスレッドも増えるので、スレッドの方も調整する。

 

スレッドのキャッシュ

コネクションの切断後に、スレッドをキャッシュしておくサイズです。

 

my.conf

thread_cache_size

デフォルト8M

 

max_connectionsが300の場合

thread_cache_size=100

※一般的な設定は、max_connectionsの3分の1みたいです。

 

確認

SHOW STATUS LIKE 'Threads%';

コレで表示される、

+-------------------+-------+

| Variable_name     | Value |

+-------------------+-------+

| Threads_cached    | 0     |

| Threads_connected | 1     |

| Threads_created   | 1     |

| Threads_running   | 1     |

+-------------------+-------+

 

その中の、Threads_created

 

これは、新しく作成されたスレッド数ってことなので、

この数がキャッシュのミスというか、ハズレ。

これが、0であれば全部キャッシュでヒットしていると言うことになります。

 

 

基本中の基本のような設定か。

もう、これだけでおなかいっぱい。