solucionar - No se puede aumentar max_open_files para Mysql max-connections en Ubuntu 15
too many connections mega (3)
A partir de MySQL 5.7.7, esto es lo que la documentación recomienda para Red Hat Enterprise Linux 7, Oracle Linux 7, CentOS 7, SUSE Linux Enterprise Server 12, Fedora 24 y 25:
https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html
En Ubuntu 16.04 el servicio se llama mysql, no mysqld, así que esto es lo que hice:
sudo mkdir /etc/systemd/system/mysql.service.d
sudo vi /etc/systemd/system/mysql.service.d/override.conf
Se agregó esto en el nuevo archivo override.conf:
[Service]
LimitNOFILE=5000
Luego reinició el servicio:
sudo systemctl daemon-reload
sudo systemctl restart mysql
Estoy ejecutando esta versión de Mysql
Ver 14.14 Distrib 5.6.24, for debian-linux-gnu (x86_64)
En esta versión de Ubuntu
Distributor ID: Ubuntu
Description: Ubuntu 15.04
Release: 15.04
Codename: vivid
Esta es la configuración que configuré para 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
Estas son las advertencias que sigo recibiendo al iniciar 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)
Ya probé estos pasos:
1) Agregar esto a /etc/security/limits.conf
mysql soft nofile 65535
mysql hard no file 65535
2) Agregar esto a /etc/pam.d/common-auth
y /etc/pam.d/commom-session
session required pam_limits.so
3) Agregue esto a /etc/mysql/mysql.conf.d/mysqld.cnf
open-files-limit=4510 or open_files_limit=4510
Ninguno de estos ha funcionado y todavía no puedo aumentar las conexiones de mysql max a 500.
Realmente apreciaría algo de ayuda en este punto.
Muchas gracias por adelantado.
Le sugiero que no copie el archivo mysql.service existente como se sugiere, solo cree un archivo con solo los cambios que le interesan. Entonces hazlo
mkdir /lib/systemd/system/mysql.service.d
vim /etc/systemd/system/mysql.service.d/limits.conf
Y el contenido de limits.conf es simple:
[Service]
LimitNOFILE=10000
LimitMEMLOCK=10000
o los límites que prefieras
Ubuntu se movió de Upstart a Systemd en la versión 15.04 y ya no respeta los límites en /etc/security/limits.conf para los servicios del sistema. Estos límites ahora se aplican solo a las sesiones de los usuarios.
Los límites para el servicio MySQL se definen en el archivo de configuración de Systemd, que debe copiar desde su ubicación predeterminada en / etc / systemd y luego editar la copia.
sudo cp /lib/systemd/system/mysql.service /etc/systemd/system/
sudo vim /etc/systemd/system/mysql.service # or your editor of choice
Agregue las siguientes líneas al final del archivo:
LimitNOFILE=infinity
LimitMEMLOCK=infinity
También podría establecer un límite numérico, por ejemplo, LimitNOFILE=4510
.
Ahora vuelva a cargar la configuración de Systemd con:
sudo systemctl daemon-reload
Reinicie MySQL y ahora debe obedecer la directiva max_connections.
También tuve problemas para detener MySQL limpiamente después de actualizar a 15.04. Si esto te afecta (lo sabrás porque tardará 300 segundos en terminar cuando haces el service mysql stop
o service mysql restart
), entonces al agregar la siguiente línea al mismo archivo /etc/systemd/system/mysql.service se arregló para mi:
ExecStop=/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf shutdown
Este último problema parece haber sido corregido por 16.04 y esta línea ya no es necesaria, por lo que antes de realizar una actualización de distribución, querrá detener MySQL y eliminar la línea ExecStop
del archivo de configuración.