GNU/Linux >> Tutoriales Linux >  >> Linux

Error del servidor MySQL:"No se puede crear un nuevo subproceso (errno 11)"

El error 11 del sistema operativo es "Recurso temporalmente no disponible". La causa más común de recibir este error al intentar crear un nuevo hilo es haber golpeado el kernel del proceso que impuso un límite en los descriptores de archivos abiertos. La segunda causa más común es haber alcanzado el límite impuesto por el núcleo del proceso en la cantidad de procesos/subprocesos.

Estos son los factores involucrados:

  1. Los límites de todo el sistema:sysctl -e fs.file-max &&sysctl -e kernel.threads-max
  2. Los límites por proceso (en un *nuevo* shell):ulimit -n, grep nofile /etc/security/limits.conf y ulimit -u, grep nproc /etc/security/limits.conf.
  3. La configuración open_files_limit en mysqld (mysql> muestra variables globales como "open_files_limit";).
  4. Las otras configuraciones dentro de mysqld que pueden afectar la cantidad de FD abiertos y subprocesos que el proceso puede usar (max_connections, thread_cache_size, table_open_cache, table_definition_cache, innodb_open_files, etc.)

Suponiendo que de hecho alcanzamos el límite de archivos abiertos, que por defecto es 1024 en la mayoría de los sistemas Linux, deberíamos poder evitar el problema siguiendo estos pasos:

1. Aumentar el límite explícito de archivos abiertos en mysqld haciendo este cambio en el archivo my.cnf:

[mysqld]

# Here X could be (max_connections+table_cache)*3  OR you could simply set it very high, for example 32000
open-files-limit = X 

2. Reinicie el servicio mysqld:

/etc/init.d/mysql restart

Límites de NPROC

Si, en cambio, parece que el límite de nproc es la causa (CentOS 6 pone un límite bajo en /etc/security/limits.conf), entonces podemos aumentar el límite de nproc de diferentes maneras.

1. Editar límites.conf:

Podemos establecer los límites para el usuario mysql en el archivo limits.conf, por ejemplo:

mysql soft nproc 10240
mysql hard nproc 40960

Tenga en cuenta que limites.conf solo se aplica a los shells de inicio de sesión y no afecta los procesos iniciados por init o systemd. Cualquier cambio en los límites.conf solo se aplicará a los nuevos inicios de sesión, debe cerrar sesión e iniciar sesión para iniciar una nueva sesión.

2. Edite el script mysqld_safe:

También podemos simplemente agregar una llamada ulimit cerca de la parte superior del script mysqld_safe, por ejemplo:

$ ulimit -u 40000

3. Use una secuencia de comandos contenedora:

Consulte la publicación a continuación sobre "Cómo usar un script de contenedor para establecer atributos personalizados por proceso para el servidor MySQL".

Cómo utilizar un script de envoltorio para establecer atributos personalizados por proceso para el servidor MySQL

Tendremos que reiniciar mysqld para que los cambios surtan efecto.


Linux
  1. Cree una nueva base de datos y utilícela en MySQL/MariaDB

  2. ¿Error 1130 al conectarse a Mysql en Ubuntu Server 12.04?

  3. Pitchfork:Crear servidor

  4. Error fatal:no se pueden abrir y bloquear tablas de privilegios:la tabla 'mysql.host' no existe

  5. ¿Cómo puedo exportar los privilegios de MySQL y luego importarlos a un nuevo servidor?

Cómo crear un nuevo usuario administrador de WordPress a través de MySQL

Cómo crear un nuevo usuario de MySQL a través de phpMyAdmin

¿Cómo crear una nueva base de datos MySQL y un usuario?

¿Cómo puedo crear una nueva base de datos MySQL en cPanel?

Cómo crear un nuevo servidor en la nube de Atlantic.Net

Crear un servidor en la nube