web-dev-qa-db-ja.com

変更された制限:max_connections:214

MySQLバージョン5.7.15、ubuntu0.16.04.1を使用しています。 MySQLを起動すると、ログの下になり、

2016-11-06T13:44:56.838233Z 0 [Warning] option 'table_open_cache': unsigned value 33554432 adjusted to 524288
2016-11-06T13:44:56.839061Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 1049386)
2016-11-06T13:44:56.839078Z 0 [Warning] Changed limits: max_connections: 214 (requested 800)
2016-11-06T13:44:56.839082Z 0 [Warning] Changed limits: table_open_cache: 400 (requested 524288)

$ ulimit -Sa | grep "ファイルを開く"

ファイルを開く(-n)1024

グーグルでは、それはopen_files_limitのように指定されます。

/etc/mysql/mysql.conf.d/mysqld.cnfに以下の値を設定し、MySQlサーバーを再起動するだけで十分ですか?

open_files_limit = 2048

max_connections = 800

table_open_cache = 600

MySQLサーバーを再起動せずに値を変更する他の方法はありますか?

MySQL構成ファイルにopen_files_limitを設定することで十分ですか?

1
Muthu

まず、open files (-n) 1024を増やすためにOSを変更する必要があります。 MySQLの値はそれを反映するだけです。

max_connections = 214は十分な数です。本当にもっと必要かどうか話し合いましょう。

1つのサーバーからの24の接続は潜在的に過剰です。その数が多い場合、それらはmayが互いにつまずきます。その結果、スループットは増加せずにレイテンシが増加します。私はこのようなケースを見てきました。最善の救済策は、後でスロットルすることです。

table_open_cacheの単位は、バイトではなくテーブルです。そして、それはキャッシュなので、それは通常小さめの数でも構いません。 (「小さすぎる」かどうかを示すSTATUS値があります。)

結論:mysqldを再起動できるまで、クライアントスレッドの数を減らします。

0
Rick James

変数が動的かどうかは、 http://dev.mysql.com/doc/refman/5.7/en/dynamic-system-variables.html でいつでも確認できます

または、パラメーターを直接確認します。 http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_open_files_limit

動的な場合は、次のことができます。

set global <variable_name> = <value>;

My.cnfを変更することを忘れないでください。変更しないと、次回の再起動で上書きされます。

そうでない場合は、MySQLを再起動して実行する必要があります。 Oracleは、ますます動的な変数の取得に取り組んでおり、5.5-> 5.6-> 5.7の傾向を確認できます。残念ながら、再起動が必要なパラメーターは常に存在します。

1
Károly Nagy