Подтвердить что ты не робот

Невозможно увеличить max_open_files для Mysql max-соединений в Ubuntu 15

Я запускаю эту версию 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 max до 500.

Я бы очень признателен за помощь в этом вопросе.

Большое спасибо заранее.

4b9b3361

Ответ 1

Ubuntu переместился с Upstart на Systemd в версии 15.04 и больше не соблюдает ограничения в /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.

У меня также были проблемы с остановкой MySQL после обновления до 15.04. Если это повлияет на вас (вы будете знать, потому что это займет около 300 секунд, когда вы делаете service mysql stop или service mysql restart), добавив следующую строку в тот же файл /etc/systemd/system/mysql.service, исправленный для меня:

ExecStop=/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf shutdown

Эта последняя проблема, по-видимому, была исправлена ​​16.04, и эта строка больше не требуется, поэтому перед обновлением дистрибутива вы захотите остановить MySQL и удалить строку ExecStop из файла конфигурации.

Ответ 2

Я предлагаю вам не копировать существующий файл mysql.service, как было предложено, просто создайте файл только с теми изменениями, которые вам интересны. Итак:

mkdir /lib/systemd/system/mysql.service.d
vim /etc/systemd/system/mysql.service.d/limits.conf

И содержимое limit.conf просто:

[Service]
LimitNOFILE=10000
LimitMEMLOCK=10000

или любые ограничения, которые вы предпочитаете.

Ответ 3

Как и в случае с 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 служба называется mysql, а не mysqld, поэтому это то, что я сделал:

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