エラー!!!接続が多すぎます(接続が多すぎるため、データベースへの接続に失敗し、ビジネスを正常に実行できません)

接続が多すぎます(接続が多すぎると、データベースへの接続に失敗し、ビジネスは正常になりません

1.問題の回復

mysql> show variables like '%max_connection%'; 
| Variable_name   | Value | 
max_connections | 151   |  
mysql> set global max_connections=1;Query OK, 0 rows affected (0.00 sec) 
[root@node4 ~]# mysql -uzs -p123456 -h 192.168.56.132 
ERROR 1040 (00000): Too many connections 

2つ、ソリューションのアイデア

  • 1.まず、MySQLデータベースパラメータファイルの対応するmax_connectionsパラメータ値の設定が小さすぎて、クライアント接続の数がデータベースが耐えられる最大値を超えていないかどうかを検討します。
    この値のデフォルトサイズは151ですが、実際の状況に応じて調整できます。

三、解決策

  • グローバルmax_connections = 500を設定します

  • 1.しかし、この調整は、データベースがこれほど大きな接続圧力に耐えられるかどうかを確認できないため、隠れた危険性があります。人は蒸しパンを1つしか食べられないようですが、今は10を食べなければならず、間違いなくそれを受け入れないでください。サーバーに反映されると、ダウンタイムが発生する可能性があります。

  • 2.次に、Innodbの同時処理の数を制限できます。innodb_thread_concurrency= 0(この種の表現は制限されていません)の場合、サーバーの負荷に応じて、最初に16または64に変更できます。

  • 3.非常に大きい場合は、低い値に変更してサーバーへの圧力を下げてから、ゆっくりと上げることができます。ご自身のビジネスによると、最初に16に調整することをお勧めします。

  • 4. MySQLのパフォーマンスは、接続数の増加に伴って低下します。MySQL5.7より前は、開発者がスレッドプールを設定して接続を再利用できるようにする必要があります。MySQL 5.7以降、データベースには独自のスレッドプールがあり、それに応じて接続番号の問題が解決されています。

对于有的监控程序会读取 information_schema 下面的表,可以考虑关闭下面的参数:
innodb_stats_on_metadata=0
set global innodb_stats_on_metadata=0

おすすめ

転載: blog.csdn.net/weixin_45647891/article/details/114236362