Wenn ich Lutris und dann den LOL-Client öffne, passiert das. Und das Spiel funktioniert nie richtig. Ich habe viele Dinge ausprobiert, kann aber das Limit für geöffnete Dateien nie ändern. Wie kann ich das beheben?
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
außerdem gibt es hier meine Limits-Infos
~$ 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
Antwort1
Wenn die Fehlermeldung „Zu viele offene Dateien“ in die Protokolle geschrieben wird, bedeutet dies, dass alle verfügbaren Dateihandles für den Prozess verwendet wurden (dazu gehören auch Sockets).
In den meisten Fällen ist dies darauf zurückzuführen, dass Dateihandles von einem Teil der Anwendung weitergegeben werden.
ulimit
ist ein Befehl in Unix/Linux, mit dem Sie Systemgrenzen für alle Eigenschaften festlegen können. In Ihrem Fall müssen Sie die maximale Anzahl geöffneter Dateien auf einen hohen Wert erhöhen (z. B. 1000000):
ulimit -n 1000000
oder
sysctl -w fs.file-max=1000000
und /etc/security/limits.conf
oder /etc/sysctl.conf
ändern:
fs.file-max = 1000000
Um festzustellen, ob die Anzahl der geöffneten Dateien im Laufe der Zeit zunimmt, geben Sie lsof
regelmäßig einen Bericht über die geöffneten Dateien anhand einer PID aus. Beispiel:
lsof -p [PID] -r [interval in seconds, 1800 for 30 minutes] > lsof.out
Dies ist insbesondere dann nützlich, wenn Sie keinen Zugriff auf den lsof
Befehl haben:
ls -al /proc/PID/fd
Antwort2
Laufen
less /proc/PID/limits
um das tatsächliche Soft-Limit der maximal geöffneten Dateien zu überprüfen. Wenn Sie ulimits einrichten, die tatsächliche Zahl aber immer noch niedrig ist, überprüfen Sie, wie Sie den Prozess starten. Beispielsweise übernimmt systemd die ulimits, und Sie sollten explizite Einstellungen verwenden, besser auf Prozessebene, um sicherzustellen, dass Ihr Programm die benötigten Laufzeitlimits erhält.
Antwort3
Ich denke, es gibt verschiedene Gründe, warum dies passieren kann:
- Systemweites Limit (Ausführen,
cat /proc/sys/fs/file-max
um das Limit anzuzeigen, bei mir ist es9223372036854775807
) - Max. Benutzerinstanzen (Ausführen
cat /proc/sys/fs/inotify/max_user_instances
: war früher128
) - Hartes Benutzerlimit ( Ausführen
ulimit -nH
:)1048576
- Weiches Benutzerlimit (Ausführen
ulimit -nS
: war früher1024
)
1. Systemweites Limit
Die systemweite Regel kann angepasst werden durch
fs.file-max = 9223372036854775807
in /etc/sysctl.conf
. Dieser Wert war für mich kein Problem.
2. Maximale Benutzerinstanzen
Für mich war dieser Wert zu niedrig. Um ihn zu beheben, fügen Sie diese Zeile erneut hinzu oder bearbeiten Sie sie in/etc/sysctl.conf
fs.inotify.max_user_instances = 1024
3. & 4. Hartes oder weiches Benutzerlimit
Mein Soft-User-Limit war auch zu niedrig. Um das zu beheben, öffnen Sie /etc/security/limits.conf
(als Root) und fügen Sie diese Zeile hinzu:
<username> soft nofile 100000
(Ersetzen Sie es <username>
durch Ihren Benutzernamen oder *
für alle Benutzer)
Das harte Benutzerlimit kann durch Ersetzen soft
von hard
in der obigen Zeile festgelegt werden. Natürlich können Sie mehrere Regeln für harte und weiche Limits oder verschiedene Benutzer haben.
Dinge in die Tat umsetzen
Vielleicht reicht es aus, sich abzumelden und erneut anzumelden, damit die Änderungen übernommen werden, aber ich habe das System sicherheitshalber neu gestartet.