KennyQiのPHPメモと息抜きブログ
KennyQi(ケニーチー)のブログへようこそ
Web制作 PHP開発のメモと息抜きブログ
ウェブ開発・デザイン・Nucleusのメモや旅日記などを綴っています
MySQLの接続数が多いときのチューニング
2009年11月02日 | Linux | Posted by: kennyqi
| 4036 PV
データベースを使ったウェブサイトで、
アクセス数が多いと、当然データベースへの接続数も多くなるかと思います。
MySQLだとデフォルトの最大接続数は100接続までOKのようですが、
接続を維持するキャッシュというのがあるようで、このサイズはデフォルトで0の模様。
また接続維持時間がデフォルトは8時間になっているようです。
ですので、アクセスがたくさんあると、
接続ができなくなるので、このような設定をしました。
とりあえず、MySQLにどれくらいの接続要求があったのか確認します。
[root@myhost ~]# mysqladmin -u root -p extended-status | egrep '(Max|Threads_)'
Enter password:
| Max_used_connections | 101 |
| Threads_cached | 0 |
| Threads_connected | 59 |
| Threads_created | 5225 |
| Threads_running | 43 |
[root@myhost ~]#
最大接続数はSUPER権限ユーザのために1つ用意されているそうで
Max_used_connectionsは101になっています。
それぞれの値については下記[参考サイト]のThinkITのリンクに書かれています。
とりあえず、こんな感じでチューニングしました。
まず、max_connections は最大接続数。これを100から500に変更。
[root@myhost ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2949
Server version: 5.0.45 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 100 |
+-----------------+-------+
1 row in set (4.97 sec)
mysql> set global max_connections = 500;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 500 |
+-----------------+-------+
1 row in set (0.00 sec)
mysql> exit
Bye
次に、キャッシュの大きさを変更
[root@myhost ~]# mysql -u root -p -e 'SET GLOBAL thread_cache_size = 10'
Enter password:
続いて、接続維持時間を8時間から2分(120秒)に変更
(もっと少なくてもいいと思う。ちなみに参考サイトでは15秒にしている)
[root@myhost ~]# mysql -u root -p -e 'SET GLOBAL wait_timeout = 120'
Enter password:
で、今回設定した値が反映されているか確認してみる。
キャッシュの大きさ
[root@myhost ~]# mysql -u root -p -e 'select @@thread_cache_size'
Enter password:
+---------------------+
| @@thread_cache_size |
+---------------------+
| 10 |
+---------------------+
接続維持時間
[root@myhost ~]# mysql -u root -p -e 'show variables like "wait_timeout"'
Enter password:
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout | 120 |
+---------------+-------+
これだけしておけば、当分大丈夫じゃないかと思ってますが、
さていかに。。
[参考サイト] Thanks!
MySQLの最大接続数を変更する - 治療不可
MySQL接続数多すぎ問題 - のみまくし日記
はじめてのMySQLチューニング 第2回:負荷によるベンチマークを試す - ThinkIT
MySQL の wait_timeout と thread_cache_size の関係
余裕があれば、ThinkITで紹介されている「super-smack」という
MySQLの負荷監視ツールも入れてみたいかな。
アクセス数が多いと、当然データベースへの接続数も多くなるかと思います。
MySQLだとデフォルトの最大接続数は100接続までOKのようですが、
接続を維持するキャッシュというのがあるようで、このサイズはデフォルトで0の模様。
また接続維持時間がデフォルトは8時間になっているようです。
ですので、アクセスがたくさんあると、
接続ができなくなるので、このような設定をしました。
とりあえず、MySQLにどれくらいの接続要求があったのか確認します。
[root@myhost ~]# mysqladmin -u root -p extended-status | egrep '(Max|Threads_)'
Enter password:
| Max_used_connections | 101 |
| Threads_cached | 0 |
| Threads_connected | 59 |
| Threads_created | 5225 |
| Threads_running | 43 |
[root@myhost ~]#
最大接続数はSUPER権限ユーザのために1つ用意されているそうで
Max_used_connectionsは101になっています。
それぞれの値については下記[参考サイト]のThinkITのリンクに書かれています。
とりあえず、こんな感じでチューニングしました。
まず、max_connections は最大接続数。これを100から500に変更。
[root@myhost ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2949
Server version: 5.0.45 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 100 |
+-----------------+-------+
1 row in set (4.97 sec)
mysql> set global max_connections = 500;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 500 |
+-----------------+-------+
1 row in set (0.00 sec)
mysql> exit
Bye
次に、キャッシュの大きさを変更
[root@myhost ~]# mysql -u root -p -e 'SET GLOBAL thread_cache_size = 10'
Enter password:
続いて、接続維持時間を8時間から2分(120秒)に変更
(もっと少なくてもいいと思う。ちなみに参考サイトでは15秒にしている)
[root@myhost ~]# mysql -u root -p -e 'SET GLOBAL wait_timeout = 120'
Enter password:
で、今回設定した値が反映されているか確認してみる。
キャッシュの大きさ
[root@myhost ~]# mysql -u root -p -e 'select @@thread_cache_size'
Enter password:
+---------------------+
| @@thread_cache_size |
+---------------------+
| 10 |
+---------------------+
接続維持時間
[root@myhost ~]# mysql -u root -p -e 'show variables like "wait_timeout"'
Enter password:
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout | 120 |
+---------------+-------+
これだけしておけば、当分大丈夫じゃないかと思ってますが、
さていかに。。
[参考サイト] Thanks!
MySQLの最大接続数を変更する - 治療不可
MySQL接続数多すぎ問題 - のみまくし日記
はじめてのMySQLチューニング 第2回:負荷によるベンチマークを試す - ThinkIT
MySQL の wait_timeout と thread_cache_size の関係
余裕があれば、ThinkITで紹介されている「super-smack」という
MySQLの負荷監視ツールも入れてみたいかな。
2人中、2人(100.00%)がよい記事だとと投票しています。
| この記事はどうですか? | : 2 | : 0 |
Search
Categories
Tags
New Comments
08/18 17:48:30
kennyqi
お役に立ててうれしいです!>>
07/29 10:29:40
jun
お邪魔しました☆の間違いです。失礼いたしました!>>
07/29 10:28:41
jun
ミュクルを聞く方法を探していたらこちらにお邪魔した☆最近韓...>>
03/23 09:52:56
kennyqi
Google撤退を発表しちゃいましたね。 今後、活動拠点を香港...>>
11/26 09:22:28
kennyqi
CPUの稼働率、 DBとWebサーバを分けたら落ち着きました^^;>>
Archives
カテゴリ別記事リスト
8月, 2010
6月, 2010
4月, 2010
3月, 2010
2月, 2010
11月, 2009
9月, 2009
7月, 2009
6月, 2009
4月, 2009
3月, 2009
2月, 2009
1月, 2009
12月, 2008
11月, 2008
10月, 2008
9月, 2008
5月, 2008
3月, 2008
2月, 2008
1月, 2008
12月, 2007
Memo
» フリーWebテンプレート
» 携帯絵文字一覧
» 無料ロゴメーカー
Categories
Tags
Apache | Google | CentOS5 | UTF-8 | テンプレート | エラー | Nucleus | Postfix | AU | MySQL | NIC | メールサーバ | Softbank | CentOS4 | CentOS | SEO | 文字化け | PHP | HDD | 携帯
New Comments
08/18 17:48:30
kennyqi
お役に立ててうれしいです!>>
07/29 10:29:40
jun
お邪魔しました☆の間違いです。失礼いたしました!>>
07/29 10:28:41
jun
ミュクルを聞く方法を探していたらこちらにお邪魔した☆最近韓...>>
03/23 09:52:56
kennyqi
Google撤退を発表しちゃいましたね。 今後、活動拠点を香港...>>
11/26 09:22:28
kennyqi
CPUの稼働率、 DBとWebサーバを分けたら落ち着きました^^;>>
Archives
カテゴリ別記事リスト
8月, 2010
6月, 2010
4月, 2010
3月, 2010
2月, 2010
11月, 2009
9月, 2009
7月, 2009
6月, 2009
4月, 2009
3月, 2009
2月, 2009
1月, 2009
12月, 2008
11月, 2008
10月, 2008
9月, 2008
5月, 2008
3月, 2008
2月, 2008
1月, 2008
12月, 2007
Memo
» フリーWebテンプレート
» 携帯絵文字一覧
» 無料ロゴメーカー