quando abro o Lutris e depois o cliente LOL, isso acontece. E o jogo nunca funciona bem. Tentei muitas coisas, mas nunca consegui alterar o limite de arquivos abertos. Como posso consertar isso?
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
também há informações sobre meus limites
~$ 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
Responder1
Quando a mensagem de erro "Too Many Open Files" é gravada nos logs, ela indica que todos os identificadores de arquivo disponíveis para o processo foram usados (isso também inclui soquetes).
Na maioria dos casos, isso é o resultado do vazamento de identificadores de arquivos por alguma parte do aplicativo.
ulimit
é um comando em Unix/Linux que permite definir limites do sistema para todas as propriedades. No seu caso, você precisa aumentar o número máximo de arquivos abertos para um número grande (por exemplo, 1.000.000):
ulimit -n 1000000
ou
sysctl -w fs.file-max=1000000
e /etc/security/limits.conf
ou /etc/sysctl.conf
alterar:
fs.file-max = 1000000
Para determinar se o número de arquivos abertos está aumentando ao longo de um período de tempo, emita lsof
relatórios periódicos dos arquivos abertos em relação a um PID. Por exemplo:
lsof -p [PID] -r [interval in seconds, 1800 for 30 minutes] > lsof.out
Isto é especialmente útil se você não tiver acesso ao lsof
comando:
ls -al /proc/PID/fd
Responder2
Correr
less /proc/PID/limits
para verificar o limite suave real do máximo de arquivos abertos. Se você configurar ulimits, mas o número real ainda for baixo, revise como você inicia o processo. Por exemplo, o systemd assume os ulimits, e você deve usar configurações explícitas, melhor no nível do processo, para garantir que seu programa obtenha os limites de tempo de execução necessários.
Responder3
Eu acho que existem diferentes casos em que isso pode acontecer:
- Limite de todo o sistema (Corra
cat /proc/sys/fs/file-max
para ver o limite, para mim é9223372036854775807
) - Máximo de instâncias de usuário (Run
cat /proc/sys/fs/inotify/max_user_instances
: costumava ser128
) - Limite rígido de usuários ( Executar
ulimit -nH
:)1048576
- Limite flexível de usuários (Run
ulimit -nS
: costumava ser1024
)
1. Limite de todo o sistema
A regra geral do sistema pode ser ajustada colocando
fs.file-max = 9223372036854775807
em /etc/sysctl.conf
. Este valor não foi problema para mim.
2. Máximo de instâncias de usuário
Para mim, esse valor foi muito baixo. Para corrigir isso, adicione ou edite esta linha novamente em/etc/sysctl.conf
fs.inotify.max_user_instances = 1024
3. e 4. Limite de usuário rígido ou flexível
Meu limite flexível de usuários também era muito baixo. Para corrigir isso, abra /etc/security/limits.conf
(como root) e adicione esta linha:
<username> soft nofile 100000
(Substitua <username>
pelo seu nome de usuário ou *
para todos os usuários)
O limite máximo de usuários pode ser definido substituindo soft
por hard
na linha acima. Claro, você pode ter várias regras para limites rígidos e flexíveis ou usuários diferentes.
Colocando as coisas em prática
Talvez um logout e um novo login sejam suficientes para que as alterações sejam detectadas, mas apenas reiniciei o sistema para ter certeza.