TOPサーバ構築・運用> thread_cacheについて




MySQLチューニング
はじめてのMySQLチューニング

第3回:max_connectionsとthread_cacheのチューニングを行う

著者:アールワークス  田中 靖之   2007/7/17
前のページ  1  2  3  次のページ
thread_cacheについて

   これまで掲載してきた結果のグラフに線が引いてあるのに、あえて本文ではThreads_createdに触れませんでした。しかし、この値をよく見るとmax_used_connectionsの変化とThreads_createdの推移は似通っていて、緑線の手前までは順調に増加し、緑線以降は横ばいになっていることに気づきます。

   この傾向は「同時接続数が増加するにつれてMySQLサーバでは新たなスレッド生成に忙しくなり、ついには一度に生成できるスレッド数の限界に達してしまった」ということをあらわしています。

   ではスレッドの生成を抑えることができれば、性能は向上するのではないでしょうか。そのためのパラメータが「thread_cache」です。

   thread_cacheではその名の通り「スレッドをいくつキャッシュしておくか」を指定する項目です。通常、MySQLはクライアントからの要求を受けてスレッドを生成し、処理が完了すればスレッドを終了します。ですが、スレッドの生成・終了にはある程度のサーバリソースを消費しますので、クライアントからの要求が増えればその負荷も増大します。

   こうしたケースに対応するためthread_cacheを設定し、一度生成したスレッドを終了せずに維持しておき、次に別のクライアントから要求があった際に再利用します。そうすることによって、スレッドの生成、終了処理によるサーバ負荷の増大を防ぐことができるのです。

現在キャッシュされているスレッド数の確認方法

   現在キャッシュされているスレッドの数ですが、これは「第2回:負荷によるベンチマークを試すで示したようにThread_cached=0となっていたはずです。では現在、thread_cacheはいくつに設定されているのでしょうか。以下のコマンドを用いて実際に確認してみましょう。


(画像をクリックすると別ウィンドウに拡大図を表示します)

   thread_cacheは0になっています。つまりデフォルトではthread_cacheは使わない、という設定になっているのです。


thread_cacheのチューニング

   ではthread_cacheの値を変えてどのように変わるのかを調べてみましょう。thread_cacheの設定方法はmax_connectionsと同様です。設定値はmax_connectionsと同じ450に変更します。

[mysqld]
max_connections=450
thread_cache=450

   その後、MySQLサービスを再起動します。

# /etc/init.d/mysql restart

   稼動中の設定変更も可能ですが、こちらの場合は名称がthread_cache_sizeとなりますので、注意してください。

$ mysql -u root -p
mysql> set global thread_cache_size=450;

   ではthread_cacheを変更した際の結果を確認しましょう。



前のページ  1  2  3  次のページ


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


INDEX
第3回:max_connectionsとthread_cacheのチューニングを行う
  max_connectionsのチューニング
thread_cacheについて
  thread_cacheチューニング後の測定結果