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さん