このバージョンのMysqlを実行しています
Ver 14.14 Distrib 5.6.24, for debian-linux-gnu (x86_64)
このバージョンのUbuntu
Distributor ID: Ubuntu
Description: Ubuntu 15.04
Release: 15.04
Codename: vivid
これは、Mysqlに設定した構成です。
key_buffer_size = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
innodb_buffer_pool_size=20G
innodb_log_buffer_size=16M
tmp_table_size = 32M
max_heap_table_size = 32M
open-files-limit=4510
max_connections=500
myisam-recover = BACKUP
query_cache_type=1
query_cache_limit = 32M
query_cache_size = 32M
これらは、MYSQLを起動するときに表示される警告です。
2015-06-17 17:28:53 26720 [Warning] Buffered warning: Could not increase number
of max_open_files to more than 1024 (request: 4510)
2015-06-17 17:28:53 26720 [Warning] Buffered warning: Changed limits: max_connections:
214 (requested 500)
2015-06-17 17:28:53 26720 [Warning] Buffered warning: Changed limits: table_open_cache:
400 (requested 2000)
私はすでにこれらの手順を試しました:
1)/etc/security/limits.conf
にこれを追加
mysql soft nofile 65535
mysql hard no file 65535
2)これを/etc/pam.d/common-auth
と/etc/pam.d/commom-session
に追加します
session required pam_limits.so
3)これを/etc/mysql/mysql.conf.d/mysqld.cnf
に追加します
open-files-limit=4510 or open_files_limit=4510
これらはどれも機能せず、mysqlの最大接続数を500に上げることはまだできません。
この時点でいくつかの助けを本当に感謝します。
事前に感謝します。
Ubuntuはバージョン15.04でUpstartからSystemdに移行し、システムサービスの/etc/security/limits.confの制限を尊重しなくなりました。現在、これらの制限はユーザーセッションにのみ適用されます。
MySQLサービスの制限はSystemd設定ファイルで定義されています。デフォルトの場所から/ etc/systemdにコピーしてから、コピーを編集する必要があります。
Sudo cp /lib/systemd/system/mysql.service /etc/systemd/system/
Sudo vim /etc/systemd/system/mysql.service # or your editor of choice
ファイルの最後に次の行を追加します。
LimitNOFILE=infinity
LimitMEMLOCK=infinity
LimitNOFILE=4510
などの数値制限を設定することもできます。
ここで、Systemd設定をリロードします。
Sudo systemctl daemon-reload
MySQLを再起動すると、max_connectionsディレクティブに従うようになります。
また、15.04へのアップグレード後にMySQLを正常に停止する際に問題が発生しました。これが影響する場合(service mysql stop
またはservice mysql restart
を実行するとタイムアウトするのに300秒かかるためわかります)、同じ/ etc/systemd/system/mysqlに次の行を追加します。サービスファイルは私のためにそれを修正しました:
ExecStop=/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf shutdown
この後者の問題は16.04で修正されたようで、この行は不要になったため、ディストリビューションアップグレードを行う前に、MySQLを停止し、設定ファイルからExecStop
行を削除します。
MySQL 5.7.7の時点で、これはドキュメントがRed Hat Enterprise Linux 7、Oracle Linux 7、CentOS 7、SUSE Linux Enterprise Server 12、Fedora 24および25に推奨するものです。
https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html
Ubuntu 16.04では、サービスはmysqldではなくmysqlと呼ばれるため、これが私がやったことです。
Sudo mkdir /etc/systemd/system/mysql.service.d
Sudo vi /etc/systemd/system/mysql.service.d/override.conf
これを新しいファイルoverride.confに追加しました。
[Service]
LimitNOFILE=5000
次に、サービスを再起動しました。
Sudo systemctl daemon-reload
Sudo systemctl restart mysql
提案されているように既存のmysql.serviceファイルをコピーするのではなく、気になる変更のみを含むファイルを作成することをお勧めします。だから:
mkdir /lib/systemd/system/mysql.service.d
vim /etc/systemd/system/mysql.service.d/limits.conf
また、limits.confの内容は次のとおりです。
[Service]
LimitNOFILE=10000
LimitMEMLOCK=10000
またはあなたが好む制限。