MySQL ERROR 1040: Too many connections
この章では、サーバに
max_接続ビュー
処理シナリオ
この問題には一般的に2つの処理案があり,解決策は非常に容易であり,
現在のセッションのmysql最大接続数を増やす
上のmysql接続値は一時的に1000に増加しましたが、現在のセッションにのみ適用されます.mysqlサービスを再起動するか、システムを再起動すると、この値はデフォルト値にリセットされます.
mysql最大接続数を永続的に増加
mysql接続数を永続的に増やすには、mysqlプロファイル、すなわち
ファイルを保存してMySQLを再起動すると有効になります.
どのくらい拡張すればいいですか?
方式一
MySQLの同時性を向上させるには、メモリに大きく依存し、
方式2
設置スケール拡張:
拡張
以下では、MySQLのパフォーマンスに影響を与える一般的な状況についても説明します.
スレッド Threads_Cachedスレッドのキャッシュ数 Threads_接続の現在開いている接続数 Threads_createdは、接続を処理するためのスレッド数を作成します. Threads_running未スリープスレッド数 もしThreads_createdが大きいとthread_を増やす可能性がありますcache_size値.キャッシュミス率はThreads_として計算できます.created/Connections
表ロックの表示 Table_locks_immediateがテーブルロック要求を直ちに取得する回数 Table_locks_waitedはテーブルロックに対するリクエストの回数をすぐに取得できず、待機する必要があります.この値が高すぎると、パフォーマンスに問題が発生し、接続の解放に影響を及ぼす可能性があることを示します.
スロークエリ
スレッドの詳細
まとめ
もちろん、以上は大まかな解決策にすぎず、いずれの方法を使っても、実際のビジネスシーンと結びつけて拡張する必要があります.
また,生産環境に対して適切なアラーム閾値を設定することも必要である.
最後に、プログラミング時に、MySQL文でデータベースを呼び出して
参考記事
https://dev.mysql.com/doc/ref...
https://dev.mysql.com/doc/ref...
https://dev.mysql.com/doc/ref...
MySQL Calculator
ERROR 1040: Too many connections
エラーが発生した場合の処理の心得について説明します.max_接続ビュー
##
SHOW VARIABLES LIKE "max_connections";
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 512 |
+-----------------+-------+
##
SHOW VARIABLES LIKE 'Max_used_connections';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| Max_used_connections | 499 |
+----------------------+-------+
処理シナリオ
この問題には一般的に2つの処理案があり,解決策は非常に容易であり,
max_connections
接続数を増やすだけでよい.現在のセッションのmysql最大接続数を増やす
SET GLOBAL max_connections = 1000;
上のmysql接続値は一時的に1000に増加しましたが、現在のセッションにのみ適用されます.mysqlサービスを再起動するか、システムを再起動すると、この値はデフォルト値にリセットされます.
mysql最大接続数を永続的に増加
mysql接続数を永続的に増やすには、mysqlプロファイル、すなわち
/etc/my.cnf
を編集する必要があります.sudo vim /etc/my.cnf
##
max_connections = 1000
ファイルを保存してMySQLを再起動すると有効になります.
どのくらい拡張すればいいですか?
Max_connextions
は大きいほど良いわけではありませんが、どのように構成しますか?方式一
MySQLの同時性を向上させるには、メモリに大きく依存し、
innodb
のメモリけいさんモードが公式に提供されています.innodb_buffer_pool_size
+ key_buffer_size
+ max_connections * (sort_buffer_size + read_buffer_size + binlog_cache_size)
+ max_connections * 2MB
方式2
設置スケール拡張:
max_used_connections / max_connections * 100% = [85, 90]%
/
は80%〜90%区間に達し、最適化または拡張を提案した.拡張
以下では、MySQLのパフォーマンスに影響を与える一般的な状況についても説明します.
スレッド
SHOW STATUS LIKE 'Threads%';
+-------------------+--------+
| Variable_name | Value |
+-------------------+--------+
| Threads_cached | 1 |
| Threads_connected | 217 |
| Threads_created | 29 |
| Threads_running | 88 |
+-------------------+--------+
SHOW VARIABLES LIKE 'thread_cache_size';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| thread_cache_size | 10 |
+-------------------+-------+
表ロックの表示
SHOW GLOBAL STATUS LIKE 'table_locks%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| Table_locks_immediate | 90 |
| Table_locks_waited | 0 |
+-----------------------+-------+
スロークエリ
show variables like '%slow%';
+---------------------------+----------------------------------------------+
| Variable_name | Value |
+---------------------------+----------------------------------------------+
| slow_launch_time | 2 |
| slow_query_log | On |
+---------------------------+----------------------------------------------+
スレッドの詳細
##
SHOW PROCESSLIST;
+--------+----------+------------------+--------------+---------+-------+-------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+--------+----------+------------------+--------------+---------+-------+-------------+------------------+
| 3 | xxxadmin | localhost | NULL | Sleep | 1 | cleaning up | NULL |
| 4 | xxxadmin | localhost | NULL | Sleep | 0 | cleaning up | NULL |
| 5 | xxxadmin | localhost | NULL | Sleep | 6 | cleaning up | NULL |
+--------+----------+------------------+--------------+---------+-------+-------------+------------------+
まとめ
もちろん、以上は大まかな解決策にすぎず、いずれの方法を使っても、実際のビジネスシーンと結びつけて拡張する必要があります.
また,生産環境に対して適切なアラーム閾値を設定することも必要である.
最後に、プログラミング時に、MySQL文でデータベースを呼び出して
SQL
を実行すると、スレッド操作MySQLが割り当てられるので、呼び出しが終了した後、接続を回収し、漏洩を避ける必要があります.参考記事
https://dev.mysql.com/doc/ref...
https://dev.mysql.com/doc/ref...
https://dev.mysql.com/doc/ref...
MySQL Calculator