43

多くのユーザーが接続してデータベースを使用するサーバーがあり、MySQL を使用しています。MySQLのデフォルトの数max_connectionsが 100 または 150 であることはわかっていますが、その数をはるかに超える必要があると確信しているため、次のようにして数を増やしました。

SET global max_connections = 1000000

今、私は次のようにチェックしようとしmax_connectionsます:

show variables like 'max_connections'

それは私に次のことを与えます:

max_connections; 100000;

これは、成功したことを示しています (私の理解が間違っていない限り)。ユーザーが接続を開始すると、接続ユーザー数が 110 を超えると、サーバーからエラーが表示されます。エラーは次のとおりです。

接続エラー: タイムアウトが発生しました。プールから接続を取得する前に、タイムアウト期間が経過しました。これは、プールされたすべての接続が使用中で、最大プール サイズに達したために発生した可能性があります。

このエラーが発生する理由とその修正方法を教えてください。

4

3 に答える 3

69

変更方法max_connections

max_connectionsMySQL の実行中に次の方法で変更できますSET

mysql> SET GLOBAL max_connections = 5000;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE "max_connections";
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 5000  |
+-----------------+-------+
1 row in set (0.00 sec)

OPへ

timeout関連している

以前にあなたのエラー メッセージを見たことがなかったので、ググってみました。おそらく、Connector/Net を使用しています。Connector/Net マニュアルには、最大接続プール サイズがあると記載されています。(デフォルトは 100 です) 表 22.21 を参照してください。

この値を 100k に増やすか、接続プールを無効にすることをお勧めしますPooling=false

更新しました

彼には 2 つの質問があります。

Q1 - プーリングを無効にするとどうなりますか DB 接続の作成が遅くなります。connection pooling既に作成済みのDB接続を利用する仕組みです。新規接続のコストが高い。http://en.wikipedia.org/wiki/Connection_pool

Q2 - プーリングの値を増やすことはできますか、または最大値は 100 ですか?

max_connections増やすことはできますが、おそらくmy.cnfにある MAX 値は確かです

私の提案は、プーリングをオフにせず、接続エラーがなくなるまで値を 100 ずつ増やすことです。

ストレス テスト ツールがあれば、自分でJMeterテストできます。

于 2013-11-15T00:41:39.687 に答える
0

以下を使用して最大接続数を設定できます。

set global max_connections = '1 < your number > 100000';

これにより、mysql 接続数が unti に設定されます (SUPER権限が必要です)。

于 2018-07-13T09:11:59.387 に答える