Буферизированное предупреждение: Измененные пределы: max_connections: 214 (запрошено 800)
Каждый раз, когда я перезапускаю MySQL, у меня есть это предупреждение:
[Предупреждение] Буферизованное предупреждение: Измененные пределы: max_connections: 214 (запрошено 800)
Итак, мне нужно изменить переменную max_connections
:
set global max_connections = 800;
Но /etc/my.cf
имеет max_connections
set:
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
max_connections = 800
Я также изменил mysqld.service
:
# Start main service
ExecStart=/usr/bin/mysqld_safe --defaults-file=/etc/my.cnf
Я также обновил максимальные открытые файлы Centos с 1024 до 2000:
ulimit -Sa | grep "open files"
open files (-n) 2000
Но проблема не устранена.
Запуск журнала Mysql:
150924 13:15:04 mysqld_safe mysqld from pid file
/var/run/mysqld/mysqld.pid ended
150924 13:15:04 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2015-09-24 13:15:04 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2015-09-24 13:15:04 0 [Note] /usr/sbin/mysqld (mysqld 5.6.25) starting as process 29997 ...
2015-09-24 13:15:04 29997 [Warning] Buffered warning: Changed limits: max_open_files: 1024 (requested 5000)
2015-09-24 13:15:04 29997 [Warning] Buffered warning: Changed limits: max_connections: 214 (requested 800)
2015-09-24 13:15:04 29997 [Warning] Buffered warning: Changed limits: table_open_cache: 400 (requested 2000)
2015-09-24 13:15:04 29997 [Note] Plugin 'FEDERATED' is disabled.
2015-09-24 13:15:04 29997 [Note] InnoDB: Using atomics to ref count buffer pool pages
2015-09-24 13:15:04 29997 [Note] InnoDB: The InnoDB memory heap is disabled
2015-09-24 13:15:04 29997 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2015-09-24 13:15:04 29997 [Note] InnoDB: Memory barrier is not used
2015-09-24 13:15:04 29997 [Note] InnoDB: Compressed tables use zlib 1.2.3
2015-09-24 13:15:04 29997 [Note] InnoDB: Using Linux native AIO
2015-09-24 13:15:04 29997 [Note] InnoDB: Using CPU crc32 instructions
2015-09-24 13:15:04 29997 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2015-09-24 13:15:04 29997 [Note] InnoDB: Completed initialization of buffer pool
2015-09-24 13:15:04 29997 [Note] InnoDB: Highest supported file format is Barracuda.
2015-09-24 13:15:04 29997 [Note] InnoDB: 128 rollback segment(s) are active.
2015-09-24 13:15:04 29997 [Note] InnoDB: Waiting for purge to start
2015-09-24 13:15:04 29997 [Note] InnoDB: 5.6.25 started; log sequence number 24337684937
2015-09-24 13:15:04 29997 [Note] Server hostname (bind-address): '*'; port: 3306
2015-09-24 13:15:04 29997 [Note] IPv6 is available.
2015-09-24 13:15:04 29997 [Note] - '::' resolves to '::';
2015-09-24 13:15:04 29997 [Note] Server socket created on IP: '::'.
2015-09-24 13:15:04 29997 [Note] Event Scheduler: Loaded 0 events
2015-09-24 13:15:04 29997 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.6.25' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server (GPL)
Я пробовал все решения Google, но результат всегда один и тот же...
MySQL работает на выпуске CentOS Linux 7.1.1503 (Core).
Спасибо!
Ответы
Ответ 1
Проведя час или два, столкнувшись с той же проблемой на CentOS 7 с MySQL 5.6.26, здесь мое решение.
В дополнение к увеличению максимальных открытых файлов (для пользователя mysql), который, как вы уже сделали, вам нужно добавить "LimitNOFILE = 65535" (или аналогичный в зависимости от того, насколько высок лимит, который вы хотите установить) на ваш Файл определения mysql.service.
Итак, полное решение для меня было следующим:
добавьте эти две строки в /etc/security/limits.conf
mysql hard nofile 65535
mysql soft nofile 65535
добавьте эту строку в /usr/lib/systemd/system/mysqld.service(в разделе [service])
LimitNOFILE=65535
затем, наконец, перезагрузитесь и убедитесь, что эти сообщения об ошибках исчезли из вашего журнала ошибок mysql.
EDIT: спасибо @SieGeL ниже, чтобы напомнить мне добавить, если вы обновите файл .service, ваши изменения будут потеряны при обновлении. Чтобы сохранить изменения после обновления, используйте переопределение systemd, создав дополнительный файл conf в файле/etc/systemd/system/mysqld.service.d
Ответ 2
Я бы не рекомендовал редактировать исходный файл systemd, поскольку он будет перезаписан во время обновлений.
Чтобы изменить ограничения, сделайте следующее:
mkdir /etc/systemd/system/mysqld.service.d
Внутри этого каталога создайте новый файл limits.conf и добавьте в него следующий файл:
[Service]
LimitNOFILE = 65535
окончательно перезагрузите systemd с помощью
systemctl daemon-reload
и перезапустите mysqld, чтобы включить изменение:
systemctl restart mysqld
Теперь подтвердите, что изменение было успешным, используя следующий запрос:
mysql> show variables like '%file%';
Вы должны найти такую строку:
| open_files_limit | 65535
Что он, таким образом, ваши изменения выдержат обновления MySQL.