end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転しました

mysqlへの同時接続数を調べる

innodbでは innodb_thread_concurrency = 同時接続数と思っていました

サーバへのリクエストが増え、timeoutが発生した為、mysqlへの同時接続数を調べてみました。

確かに Max_used_connections = 146 なんて値は見たことありません。

$  /usr/bin/mysqladmin extended-status | grep connect
| Aborted_connects                  | 68       |
| Max_used_connections              | 146      |
| Ssl_client_connects               | 0        |
| Ssl_connect_renegotiates          | 0        |
| Ssl_finished_connects             | 0        |
| Threads_connected                 | 2        |

でも、mysqlの同時接続数はdefault=8程度だと思っていましたが、146なんてありえるのだろうか?

$ /usr/local/mysql/bin/mysqladmin variables | egrep "connect|concurrency"
| character_set_connection        | utf8                     
| collation_connection            | utf8_general_ci          
| connect_timeout                 | 10                       
| init_connect                    |                          
| innodb_commit_concurrency       | 0                        
| innodb_concurrency_tickets      | 500                      
| innodb_thread_concurrency       | 8                        
| max_connect_errors              | 10                       
| max_connections                 | 151                      
| max_user_connections            | 0                        
| thread_handling                 | one-thread-per-connection

mysqlのdocによれば、innodb_concurrency_tickets と innodb_thread_concurrency のセットで考える必要があるのかな。

http://dev.mysql.com/doc/refman/5.1/ja/innodb-parameters.html

「max_connectionsが同時接続数の最大値ですよ」

しばらくした後、「max_connectionsが同時接続数の最大値ですよ」というコメントをいただいたので、改めて調べてみました。

http://dev.mysql.com/doc/refman/5.1 では、max_connections に関する記述を見つけられずにいましたが、mysql-5.1.50/Docs/mysql.info にデフォルト「max_connections=151」と記載されていました。

「Max_used_connections = 146は、最近追加されたJDBCが怪しいのかも...」
ありがとうございました。 > nippondanjiさん