NetWorker: Der Linux NetWorker-Server ist ausgelastet und meldet die Meldung "nsrd RPC critical Cannot to accept client connection: Zu viele geöffnete Dateien"
Summary: Ein ausgelasteter Linux NetWorker-Server meldet die folgende Meldung: "nsrd RPC critical Cannot to accept client connection: Zu viele geöffnete Dateien"
Symptoms
Der NetWorker-Server reagiert nicht mehr, einschließlich:
- Die NMC-Konsole hängt an einer Fortschrittsleiste
- Die Datei
nsradminBefehl gibt nicht zurück - Die Datei
nsrwatchKehrt nicht zurück - Die Clients verlieren die Verbindung
Die Daemons auf einem NetWorker-Server für Linux beginnen mit einem zu niedrigen Limit für geöffnete Dateien. Dies liegt daran, dass die Daemons beim Start keine prozessspezifischen Limits erben. Das verwendete Limit wird auf 1024 zurückgesetzt. Dies ist in größeren Datenzonen möglicherweise nicht ausreichend.
Cause
Das Limit für geöffnete Dateien auf dem NetWorker-Server ist zu niedrig.
- Abrufen der PID für nsrd
$ ps aux | grep nsrd | grep -v grep | grep -v disp | awk '{ print $2; }'
4021
-
Die PID ist Teil des Pfads in
/proc/<nsrd_PID>/limitszur Überprüfung mit demcatBefehl durchgeführt:
$ cat /proc/4021/limits Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds Max file size unlimited unlimited bytes Max data size unlimited unlimited bytes Max stack size 10485760 unlimited bytes Max core file size unlimited unlimited bytes Max resident set unlimited unlimited bytes Max processes 63833 63833 processes Max open files 1024 1024 files Max locked memory 32768 32768 bytes Max address space unlimited unlimited bytes Max file locks unlimited unlimited locks Max pending signals 63833 63833 signals Max msgqueue size 819200 819200 bytes Max nice priority 0 0 Max realtime priority 0 0 $
Resolution
Erstellen Sie ein separates Startskript für die NetWorker-Server mit hoher Last, indem Sie vor dem Start der NetWorker-Services die folgende Umgebungsvariable aktivieren:
So legen Sie auf vollständiger Betriebssystemebene fest:
Deskriptoren für geöffnete Dateien: Ändern Sie den Parameter open file descriptors auf mindestens:
- 8192 (kleine NetWorker-Umgebung)
- 16384 (mittelgroße NetWorker-Umgebung)
- 32768 (große NetWorker-Umgebung)
Die Definitionen eines kleinen, mittleren oder großen NetWorker-Servers finden Sie im NetWorker Performanceoptimierungs- und Planungshandbuch.
Max. Anzahl geöffneter Dateien
Fügen Sie auf einem Linux NetWorker-Server ulimit -n 8192 im .bash_profile und starten Sie die aktuelle Sitzung neu.
So legen Sie minimale und maximale Dateideskriptoren pro Prozess fest: Red Hat 7, SLES 12, SLES 15
prlimit --pid <pid_of_the_process> --nofile=<min_limit>:<max_limit>Beispiel:prlimit --pid 12345 --nofile=1024:4096
So legen Sie minimale und maximale Dateideskriptoren pro Prozess fest: Red Hat 6
echo -n "Max open files=min_limit:max_limit" > /proc/pid_of_the_process/limitsBeispiel:echo -n "Max open files=4096:16384" > /proc/1208/limits
TCP-Parameter
Fügen Sie die folgenden TCP-Parameter hinzu, wenn der NetWorker-Server mit einer hohen Last ausgeführt wird (gleichzeitige Durchläufe mit vielen Socket-Anforderungen, die auf den Serveranwendungsports gestellt werden):
- Fügen Sie auf einem Linux NetWorker-Server die folgenden TCP-Parameter im
/etc/sysctl.confund führen Sie den Befehlsysctl --systemBefehl durchgeführt:net.ipv4.tcp_fin_timeout = 30 net.ipv4.ip_local_port_range = 15000 65535 net.core.somaxconn = 1024 - Aktualisieren Sie auf einem Linux-NMC-Server den Wert "file-max" auf 65536, um die Konnektivität der Postgres-Datenbank sicherzustellen, wenn der NetWorker-Server mit hoher Last ausgeführt wird:
echo 65536 > /proc/sys/fs/file-max