Cuando abro Lutris y luego el cliente LOL, sucede esto. Y el juego nunca funciona bien. Intenté muchas cosas pero nunca pude cambiar el límite de archivos abiertos. ¿Cómo se puede solucionar esto?
Waiting on children
Waiting on children
eventfd: Too many open files
eventfd: Too many open files
eventfd: Too many open files
esync: write: Bad file descriptor
eventfd: Too many open files
eventfd: Too many open files
eventfd: Too many open files
esync: write: Bad file descriptor
eventfd: Too many open files
eventfd: Too many open files
eventfd: Too many open files
eventfd: Too many open files
eventfd: Too many open files
eventfd: Too many open files
eventfd: Too many open files
eventfd: Too many open files
eventfd: Too many open files
eventfd: Too many open files
eventfd: Too many open files
eventfd: Too many open files
eventfd: Too many open files
eventfd: Too many open files
También está la información de mis límites.
~$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 15106
max locked memory (kbytes, -l) 16384
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 15106
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
Respuesta1
Cuando se escribe el mensaje de error "Demasiados archivos abiertos" en los registros, indica que se han utilizado todos los identificadores de archivos disponibles para el proceso (esto incluye también los sockets).
En la mayoría de los casos, esto es el resultado de que alguna parte de la aplicación filtre los identificadores de archivos.
ulimit
es un comando en Unix/Linux que permite establecer límites del sistema para todas las propiedades. En su caso, necesita aumentar la cantidad máxima de archivos abiertos a una cantidad grande (por ejemplo, 1000000):
ulimit -n 1000000
o
sysctl -w fs.file-max=1000000
y /etc/security/limits.conf
/o /etc/sysctl.conf
cambiar:
fs.file-max = 1000000
Para determinar si la cantidad de archivos abiertos está creciendo durante un período de tiempo, emita lsof
informes de los archivos abiertos contra un PID de forma periódica. Por ejemplo:
lsof -p [PID] -r [interval in seconds, 1800 for 30 minutes] > lsof.out
Esto es especialmente útil si no tienes acceso al lsof
comando:
ls -al /proc/PID/fd
Respuesta2
Correr
less /proc/PID/limits
para verificar el límite suave real de archivos abiertos máximos. Si configura ulimits pero el número real aún es bajo, revise cómo inicia el proceso. Por ejemplo, systemd se hace cargo de los ulimits y usted debe usar configuraciones explícitas, mejor a nivel de proceso, para garantizar que su programa obtenga los límites de tiempo de ejecución que necesita.
Respuesta3
Creo que hay diferentes casos por los que esto podría suceder:
- Límite de todo el sistema (ejecute
cat /proc/sys/fs/file-max
para ver el límite, para mí es9223372036854775807
) - Máximo de instancias de usuario (Ejecutar
cat /proc/sys/fs/inotify/max_user_instances
: solía ser128
) - Límite estricto de usuarios ( Ejecutar
ulimit -nH
:)1048576
- Límite flexible de usuarios (Ejecutar
ulimit -nS
: solía ser1024
)
1. Límite en todo el sistema
La regla de todo el sistema se puede ajustar poniendo
fs.file-max = 9223372036854775807
en /etc/sysctl.conf
. Este valor no fue un problema para mí.
2. Máximo de instancias de usuario
Para mí, este valor era demasiado bajo. Para solucionarlo, agregue o edite esta línea nuevamente en/etc/sysctl.conf
fs.inotify.max_user_instances = 1024
3. y 4. Límite de usuario estricto o flexible
Mi límite flexible de usuarios también era demasiado bajo. Para solucionarlo, abra /etc/security/limits.conf
(como root) y agregue esta línea:
<username> soft nofile 100000
(Reemplazar <username>
con su nombre de usuario, o *
para todos los usuarios)
El límite estricto de usuarios se puede establecer reemplazándolo soft
por hard
en la línea anterior. Por supuesto, puede tener varias reglas para límites estrictos y flexibles o para diferentes usuarios.
Poner las cosas en práctica
Tal vez cerrar sesión y volver a iniciarla sea suficiente para que se detecten los cambios, pero simplemente reinicié el sistema para estar seguro.