thread_cacheで劇的チューニング

Pocket

たまには本業のITのネタです。

MySQLのチューニングで劇的に高速化出来たので、そのときの話を少し。
1台構成のLAMP環境で、負荷が異常に高い状態になりました。

4Coreのサーバで、CPUが常時95%~99%を推移。

負荷の高い処理をしているとはいえ、そこまでたくさんプログラムが動いているわけでもなく、4CoreのCPUと16GBのメモリ量を考えれば、もっと捌けてもいいはず。

いろいろ原因を探っていくと、どうもMySQLがボトルネックになっているようだった。
MySQLを疑ったのは、長年の勘とApacheの負荷具合をみて、判断しました。

次に、チューニングポイントを探ります。
MySQLの場合、MaxConnectionとThread数を最初に疑うのが鉄則。

メモリとCPUを活かしきれていないんだろう。と思ったのです。
で、いろいろググってみると、良さそうなページを発見。

http://www.ibm.com/developerworks/jp/linux/library/l-tune-lamp-3.html

簡単なチェックプログラムを作って、Threadの様子をチェックしていると、Thread_Cacheが常に0になっていることが判明。
MySQLはThreadを作る時に負荷が掛かりますが、作り続ける状態になると当然負荷も上がります。
それを抑えるのが、Thread_Cache。

さっそく、my.cnfにThread_cacheを設定してチューニング。
Max_used_connectionの平均値から、現時点でのMySQLへのアクセス状況を踏まえて、60程度としました。

▼設定値
thread_cache = 60

その結果が、それまで高負荷状態だったCPUも50%台に落ち着き、Load Averageも下がりました。

MySQLチューニング
MySQLチューニング

ここまでスカッとチューニングが効くと超快感!
仕事した気がしたよ(笑)

しばらく落ち着いててくれるといいけど。。^^;


[Sponcerd Link]▼今話題の「琉球さんごの石鹸」


IT/パソコン

Posted by wpmaster