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

Буферизированное предупреждение: Измененные пределы: 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).

Спасибо!

4b9b3361

Ответ 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.