🙆
MySQLのパラメータ指定(Docker)
DockerでMySQLを利用していると一定期間ごとに Too many connections が出るため、許容可能なプロセスの数を増やすか、タイムアウトにする時間を短縮したい。
**プロセスの数
MySQL> show variables like "%max_connections%";
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+
タイムアウトの設定
タイムアウトは8時間(28800秒)となっている
SHOW GLOBAL VARIABLES LIKE '%timeout%';
+-----------------------------+----------+
| Variable_name | Value |
+-----------------------------+----------+
| connect_timeout | 10 |
| delayed_insert_timeout | 300 |
| have_statement_timeout | YES |
| innodb_flush_log_at_timeout | 1 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| rpl_stop_slave_timeout | 31536000 |
| slave_net_timeout | 60 |
| wait_timeout | 28800 |
+-----------------------------+----------+
Nextjsでは都度接続する設定にしているためrequestwを送る毎にコネクションの数が増えて定期的上限に到達していたようです。MySQLはデフォルトで使っていたためシステム変数を指定します
docker-compose.yml
version: "3"
services:
db:
image: mysql:5.7.41
platform: linux/amd64
command: 'mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci'
container_name: dbcontainer
volumes:
- db_data:/var/lib/mysql
+ - ./mysql/mysql.d:/etc/mysql/conf.d
restart: always
environment:
- MYSQL_ROOT_PASSWORD=
- MYSQL_USER=
- MYSQL_PASSWORD=
- MYSQL_DATABASE=
expose:
- 3306
ports:
- 3306:3306
volumes:
db_data:
MySQLの設定
mysql/mysql.d/my.cnf
wait_timeout = 60
interactive_timeout = 60
タイムアウトの時間を1分(60秒)に変更しました
SHOW GLOBAL VARIABLES LIKE '%timeout%';
+-----------------------------+----------+
| Variable_name | Value |
+-----------------------------+----------+
| connect_timeout | 10 |
| delayed_insert_timeout | 300 |
| have_statement_timeout | YES |
| innodb_flush_log_at_timeout | 1 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 60 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| rpl_stop_slave_timeout | 31536000 |
| slave_net_timeout | 60 |
| wait_timeout | 60 |
+-----------------------------+----------+
Discussion