web-dev-qa-db-ja.com

Ubuntu 15のMysql max-connectionsのmax_open_filesを増やすことはできません

このバージョンの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に上げることはまだできません。

この時点でいくつかの助けを本当に感謝します。

事前に感謝します。

27
hernangarcia

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行を削除します。

80
Matt Raines

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
13
Fredrik

提案されているように既存の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

またはあなたが好む制限。

7
Berend de Boer