TOPサーバ構築・運用> max_connectionsとは
MySQLチューニング
はじめてのMySQLチューニング

第2回:負荷によるベンチマークを試す

著者:アールワークス  田中 靖之   2007/7/9
1   2  3  次のページ
max_connectionsとは

   max_connectionsとは、「MySQLサーバが許可する、MySQLクライアントの同時接続最大数」です。この値は、MySQLクライアントから無制限にコネクションが張られることによってMySQLサーバの負荷が増大し、最終的にはサービスが停止してしまう…といった事態を防ぐために、同時接続してよいMySQLクライアントの数を制限することが目的です。

   さらにもう少しパフォーマンスに注目していい換えれば、MySQLサーバがもっとも良い効率で稼動できる範囲にMySQLクライアントの接続数を制限する、ということになります。

   あなたの環境ではいくつに設定されているでしょうか。パラメータ設定一覧を取得するコマンドは「第1回:定量的な情報収集のススメ」で説明した通りですので、以下のように実行してみましょう。
パラメータ設定一覧を取得
図1:パラメータ設定一覧を取得
(画像をクリックすると別ウィンドウに拡大図を表示します)

   特に意識して設定を変更していなければ、上記のようにデフォルト値である100が表示されるはずです。

   なお、実際に接続可能な数は「max_connections+1」で、SUPER権限を持つユーザ(rootなど)用に+1の接続が予約されています。そうすることにより、max_connectionsに達してしまった場合でも、管理者は優先的にMySQLサーバへ接続して原因調査ができる仕組みになっているのです。


現在の接続数確認方法

   先ほどの説明でmax_connectionsの設定値はわかりました。それでは今、どれくらいの数のMySQLクライアントが接続しているでしょうか。これについても、前回お話したように「mysqladmin」コマンドで取得可能です。

mysqladminコマンドを実行
図2:mysqladminコマンドを実行
(画像をクリックすると別ウィンドウに拡大図を表示します)

   Threads_cachedについては別途チューニング項目として取り上げますので後に譲るとして、その他のパラメータは以下の意味を持ちます。

パラメータ 意味
Max_used_connections これまでに記録された同時接続数の最大値
Threads_connected 現在開いている接続の数
Threads_created 接続を処理するために生成されたスレッド数
Threads_running スリープ状態になっていないスレッド数

表1:各パラメータの意味

   Max_used_connectionsはともかく、「スレッドって何?」という疑問が湧くかもしれません。ここでは単純化のために「スレッド数=MySQLクライアントの接続数」と理解してください。

   例えば図2の取得した情報を読み解くと「現在接続しているMySQLクライアントは2で、そのうち処理を実行中のものは1。これまでに接続された総数は12で、そのうち同時に接続された最大値は3である」となります。

1   2  3  次のページ


株式会社アールワークス 田中 靖之
著者プロフィール
株式会社アールワークス  田中 靖之
ネットワークインテグレーション部
主にWebサービス系のシステム運用監視を担当するネットワークインテグレーション部に所属。システム改善やチューニングを顧客と共に考える姿勢を大事にしている。


INDEX
第2回:負荷によるベンチマークを試す
max_connectionsとは
  ベンチマークプログラム「Super Smack」
  設定ファイルの作成