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を設定することで十分ですか?
まず、open files (-n) 1024
を増やすためにOSを変更する必要があります。 MySQLの値はそれを反映するだけです。
max_connections = 214
は十分な数です。本当にもっと必要かどうか話し合いましょう。
1つのサーバーからの24の接続は潜在的に過剰です。その数が多い場合、それらはmayが互いにつまずきます。その結果、スループットは増加せずにレイテンシが増加します。私はこのようなケースを見てきました。最善の救済策は、後でスロットルすることです。
table_open_cache
の単位は、バイトではなくテーブルです。そして、それはキャッシュなので、それは通常小さめの数でも構いません。 (「小さすぎる」かどうかを示すSTATUS
値があります。)
結論:mysqldを再起動できるまで、クライアントスレッドの数を減らします。
変数が動的かどうかは、 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の傾向を確認できます。残念ながら、再起動が必要なパラメーターは常に存在します。