Estoy ejecutando Ubuntu 16.04 Server en XenServer y tengo un problema con el límite de archivos abiertos de MySql.
Esto es lo que he hecho hasta ahora:
sudo nano /etc/security/limits.conf (referencia)
* soft nofile 1024000
* hard nofile 1024000
* soft nproc 102400
* hard nproc 102400
mysql soft nofile 1024000
mysql hard nofile 1024000
sudo nano /etc/init/mysql.conf (referencia)
limit nofile 1024000 1024000
limit nproc 102400 102400
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf (referencia)
[mysqld_safe]
open_files_limit = 1024000
[mysqld]
open_files_limit = 1024000
Cuando lo anterior no funcionó, pasé a lo siguiente:
sudo nano /etc/sysctl.conf
fs.file-max = 1024000
sudo nano /etc/pam.d/common-session
session required pam_limits.so
sudo nano /etc/pam.d/common-session-noninteractive
session required pam_limits.so
sudo nano /lib/systemd/system/mysql.service
LimitNOFILE=infinity
LimitMEMLOCK=infinity
Cuando inicio sesión en mi cuenta de usuario, todo parece estar bien:
ulimit -Hn
1024000
ulimit -Sn
1024000
Si inicio sesión como mysql, también se ve bien:
mysql@server:~$ ulimit -Hn
1024000
mysql@server:~$ ulimit -Sn
1024000
Sin embargo, cuando miro el proceso:
ps -ef | grep mysql
cat /proc/1023/limits | grep open
Max open files 65536 65536 files
O cuando lo miro en MySql:
mysql> show global variables like 'open%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 65536 |
+------------------+-------+
Desde los registros (/var/log/mysql/error.log):
2016-07-25T05: 44: 35.453668Z 0 [Advertencia] No se pudo aumentar el número de max_open_files a más de 65536 (solicitud: 1024000)
Estoy completamente sin ideas aquí. Al principio comencé con open_files_limit en 1024, y uno de los anteriores debe haberlo cambiado, pero necesito que vaya más alto. Ya estoy llegando a este límite, ya que tengo muchas bases de datos y tablas que a veces tienen muchas particiones.
Incluso he probado números menos agresivos que 1024000, sin suerte.
¿Alguna idea por ahí?
fuente
/lib/systemd/system/mysql.service
. Así que ya pasamos al método al que se refirió. Olvidé actualizar mi respuesta aquí. Gracias de nuevo por el recordatorio.