TOPサーバ構築・運用> デフォルト値での性能測定
MySQLチューニング
はじめてのMySQLチューニング

第4回:ベンチマークツールを使った負荷テスト

著者:アールワークス  田中 靖之   2007/7/23
前のページ  1  2  3  次のページ
デフォルト値での性能測定

   まずtable_cacheをチューニングしない状態での性能測定結果をみてみましょう。なお、最初に確認したように、table_cacheは64がデフォルト値です。

   図1のグラフは再測定したわけではなく、前回のthread_cacheチューニング後の測定結果からMax_used_connectionsとThreads_createdのデータを除き、Open_tablesとOpened_tablesに差し替えてグラフにしたものです。
table_cacheデフォルト状態での測定
図1:table_cacheデフォルト状態での測定
(画像をクリックすると別ウィンドウに拡大図を表示します)

   Open_tablesは小さい値なのでわかりづらいのですが、最初に少し増加して、それ以降は64で一定となっており、デフォルトの最大値で維持されていることがわかります。

   一方Opened_tablesを見ると、多いときは数1,000ものテーブルが開かれており、その処理のためのサーバに負荷がかかっていることが予想されます。


table_cacheのチューニング

   ではthread_cacheの値を変更してみましょう。変更方法はこれまでと同様です。今回はjoinを含むようなクエリはありませんので、max_connectionsと同じ値に設定します。

[mysqld]
max_connections=450
thread_cache=450
table_cache=450

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

# /etc/init.d/mysql restart

   一方、MySQLサービスが稼動中で、これまでのパラメータと同様に変更可能です。その場合は以下のように指定します。

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

   では変更結果を確認しましょう。




table_cacheチューニング後の測定結果

   table_cacheチューニング後、再度測定を行った結果は以下の通りでした。

table_cacheチューニング後の測定結果
図2:table_cacheチューニング後の測定結果
(画像をクリックすると別ウィンドウに拡大図を表示します)

   Open_tablesは同時接続数の増加に伴い最終的には211まで増えましたが、max_connectionsまでは必要とされなかったようです。一方、Opened_tablesは改善され、開かれるテーブル数は激減しました。

   ただしQueries_per_secにはそれほど明確な改善はみられませんでした。同時接続数が300〜400の間(Open_tablesが211になって以降)はかなり安定した値になっており、高負荷時にはtable_cacheの効果があったといえるのではないでしょうか。

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


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


INDEX
第4回:ベンチマークツールを使った負荷テスト
  table_cacheとは
デフォルト値での性能測定
  適切なtable_cacheの設定値を知るために