mysqlが最大接続値を自動調整する


11

my.cnfファイルで最大接続数を約2000に設定しました。

max_connections=2048

5.5.20にアップグレードしたら、エラーログに次の行が表示されます。

120201 19:40:24 [Warning] Changed limits: max_open_files: 1024  max_connections: 214  table_cache: 400

mysqlが最大接続数の値を214に変更したのはなぜですか?

# mysqladmin variables | grep max_connections
| max_connections | 214                                               

OSによって制限されたソフトおよびハードオープンファイルは1024です

# ulimit -Sa | grep "open files"
open files                      (-n) 1024

# ulimit -Ha | grep "open files"
open files                      (-n) 1024

実際に使用された最大接続数:

# mysql -e"show status like '%used_connections%'"
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Max_used_connections | 95     |
+----------------------+-------+

1
4096のように、高いulimitの開いているファイルを設定してみてくださいulimit -n 4096

行動は変化しましたか?私は5.0.77バージョンを持っていましたが、この問題に気づきませんでした。5.5.20にアップグレードしたときにのみ、値が変更されます。
shantanuo

1
明らかなことを尋ねるつもりです。アップグレードによってmy.cnfが変更されなかったことを確認しましたか?また、どのOSですか?これはなどのパッケージマネージャーによってインストールされましたyumか?もしそうなら、どのパッケージ?
デレクダウニー、

回答:


5

私には問題ないようです。open_files_limitが低すぎるため、max_connectionsをこれより大きくすることはできません。すべての接続に対して、MySQLはいくつかのファイルを開きます。見てくださいここに

したがって、OSで開くファイルの制限を増やす必要があります。その後、max_connectionsの値を大きくすることができます。


5

これは、CentOS 7とMySQL 5.6.26を使用していたにもかかわらず、ここでstackoverflowで回答たのと同じ問題のようです。

mysqlユーザー(limits.conf内)とmysqlサービス(mysql.serviceファイル内)の両方のオープンファイル制限を引き上げる必要があります。

これらの2行を/etc/security/limits.confに追加します

mysql hard nofile 65535
mysql soft nofile 65535

この行を/usr/lib/systemd/system/mysqld.service([service]セクション内)に追加します

LimitNOFILE=65535

次に、最後に再起動して、これらのエラーメッセージがmysqlエラーログから消えたことを確認します。


他の解決策は次のとおり
Nav

@Nav-はい、OSが適切な数のファイルハンドルをmysqldで使用することを許可していない場合、構成された最大接続数を使用することはできません
MNB

また、Ubuntuの15.04+は異なるアプローチが必要です。stackoverflow.com/questions/23977095/...
Navの

0

これは新しいmysqldのバグのようです。私も同じ問題を抱えていました。max_connectionsを700に設定しても機能しましたが、900に設定すると、起動時に214にリセットされました。これが意図的な変更である場合は、700または同様の値に下げていたので、値214は意味がありません。
とにかく、ulimit -nで記述子の制限を上げると、問題が解決します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.