これらを修正する方法、「SQLエラー1040:接続が多すぎます」を入れようとしても
max_user_connection=500
それでも「接続が多すぎます」
これらを修正する方法、「SQLエラー1040:接続が多すぎます」を入れようとしても
max_user_connection=500
それでも「接続が多すぎます」
このような接続が不足している場合は、開いている接続を閉じていない可能性が高くなります。
接続を開くコードを確認し、できるだけ早く接続を閉じるようにします。通常、IDisposableを実装するもの (データベース接続を含む) の前後でusingキーワードを使用して、そのようなオブジェクトが必要なスコープを離れるとすぐに破棄されるようにする必要があります。
次のクエリを使用して、アクティブな接続の現在の数を確認できます。
show processlist
max_connections
許可される接続の合計を増やすには、変更する必要があります。
そして、ユーザー接続ごとにこれを制限する必要がない限りmax_user_connections
、デフォルトの 0 =>制限なしに戻します。
プログラムでは、接続を開き、閉じずに開いたままにします。
私は同じ問題に直面し、最終的に特定しました。
try catch の後に、このコードを追加しました。
finally{
try {
rs.close();
p.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
この問題は主に、MySQL への最大許容同時接続数を超えた場合に発生します。許可される最大接続数は、グローバル変数 max_connections に格納されます。show global variables like max_connections;
MySQLで確認できます
次の手順で修正できます。
ステップ1:
MySQL にログインして、次のコマンドを実行します。SET GLOBAL max_connections = 100;
MySQL にログインすると、too many connection エラーが修正されました。この方法では、サーバーの再起動は必要ありません。
ステップ2:
上記のステップ 1 を使用してこの問題を解決できますが、mysql を再起動すると max_connections がデフォルト値にロールバックされます。
max_connection 値を永続的にするには、my.cnf ファイルを更新します。
MySQL サーバーを停止します。 Service mysql stop
構成ファイル my.cnf を編集します。vi /etc/mysql/my.cnf
mysqld セクションで変数 max_connections を見つけます。
[mysql]
max_connections = 300
より高い値に設定し、ファイルを保存します。
サーバーを起動します。Service mysql start
注: max_connections 変数の値を増やす前に、サーバーに新しい要求と接続に十分なメモリがあることを確認してください。
MySQL は、接続ごとにメモリを事前に割り当て、接続が閉じられたときにのみ割り当てを解除します。新しい接続がクエリを実行している場合、システムには、メモリ、ネットワーク、計算能力など、ユーザーの要求を満たすのに十分なリソースが必要です。
また、追加のリクエストに対応するために、MySQL サーバーで開いているテーブルの制限を増やすことを検討する必要があります。そして最後に。サーバー上でトランザクションが完了した接続を閉じることは非常に重要です。