NetWorker-REST-API: Zeitweise Timeouts bei HTTP GET-Anforderungen

Résumé: Die Anwendungsprogrammschnittstelle (API) von NetWorker Representational State Transfer (REST) wird verwendet, um Informationen (HTTP GET) von einem NetWorker-Server in der Umgebung anzufordern. Bei den REST API-Abfragen tritt gelegentlich ein Timeout auf und der restapi.log zeigt aufgrund eines Socket-Timeouts eine interne Serverfehlermeldung an. ...

Cet article concerne Cet article ne concerne pas Cet article n’est associé à aucun produit spécifique. Toutes les versions du produit ne sont pas identifiées dans cet article.

Symptômes

Die Anwendungsprogrammschnittstelle (API) von NetWorker Representational State Transfer (REST) wird verwendet, um Informationen (HTTP GET) von einem NetWorker-Server in der Umgebung anzufordern. Bei den REST API-Abfragen tritt gelegentlich ein Timeout auf und der restapi.log zeigt aufgrund eines Socket-Timeouts eine interne Serverfehlermeldung an.  

YYYY-MM-DD HH:MM:SS INFO [https-jsse-nio-9090-exec-26] c.e.n.w.WebApiResponse - Response status Method: 'GET', URI:'v3/global/backups', Status '200'
YYYY-MM-DD HH:MM:SS INFO [https-jsse-nio-9090-exec-26] c.e.n.w.WebApiResponse - Response status Method: 'GET', URI:'v3/global/backups', Status '500'
...
YYYY-MM-DD HH:MM:SS ERROR [https-jsse-nio-9090-exec-11] c.e.n.w.WebApiExceptionMapper - Status 'Internal Server Error', msg: java.io.IOException: Broken pipe
org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
	at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:333) ~[catalina.jar:9.0.10]

Ein curl-Befehl für die NetWorker-Server-REST-API zeigt Folgendes an:  

[root@NetworkerServer]# curl -X GET -H "Content-Type: application/json" "https://mynsr.mydomain.com:9090/nwrestapi/v3/global/backups" -u "administrator" -k -1
Enter host password for user 'administrator':
curl: (28) Operation timed out after 300406 milliseconds with 0 out of 0 bytes received

Cause

Die REST API ruft "v3/global/backups", "v3/global/jobs" oder "v3/global/volumes" allein sind ressourcenintensive Abfragen und können in größeren Umgebungen zu einem Timeout der Anforderung führen.  

HINWEIS: Dieses Problem ist nicht auf die aufgeführten REST API-Endpunkte beschränkt. Er kann auf jedem großen globalen Endpunkt auftreten und die Beobachtungen können je nach Server variieren.

Die NetWorker-REST-API-Services werden auf einem Apache Tomcat-Java-Servlet-Container gehostet, der auf einer Java Virtual Machine (JVM) ausgeführt wird. Die REST API verwendet JVM-Speicher, um jede Anforderung zu verarbeiten, und es hat sich gezeigt, dass nicht der gesamte Speicher nach einer ressourcenintensiven Abfrage freigegeben wird. Die Erhöhung der JVM-Speicherauslastung kann schließlich zu einem Timeout bei anderen, weniger ressourcenintensiven REST API-Anforderungen führen.  

Résolution

Vermeiden Sie die Verwendung ressourcenintensiver Anfragen zum Abrufen von Informationen vom NetWorker-Server. Beispiel: "v3/global/backups" oder "v3/global/clients/CLIENT_NUMBER/backups" mit einem definierten Zeitbereich anstelle der globalen "v3/global/backups", um alle Backups abzurufen.

Beschränken Sie beispielsweise die Ergebnisse für saveTime zwischen einem beliebigen angegebenen Zeitraum. Beispiel für eine Abfrage von Jobs, die innerhalb der letzten 24 Stunden abgeschlossen wurden:
 

../global/backups Beispiel:

https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/backups?q=saveTime:["START" TO "END"]
https://nsr.amer.lan:9090/nwrestapi/v3/global/backups?q=saveTime:["2024-07-24T00:00:01" TO "2024-07-24T23:59:59"]


../global/clients/client_resourceId_number/backups

https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/clients/client_resourceID_number/backups?q=saveTime:["START" TO "END"]
https://nsr.amer.lan:9090/nwrestapi/v3/global/clients/87.0.90.20.0.0.0.0.196.80.99.102.192.168.9.150/backups?q=saveTime:["2024-07-24T00:00:01" TO "2024-07-24T23:59:59"]


../global/jobs:

https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/jobs?q=endTime:["START" TO "END"]
https://nsr.amer.lan:9090/nwrestapi/v3/global/jobs?q=endTime:["2024-07-29T00:00:01" TO "2024-07-29T23:59:59"]
HINWEIS: Ändern Sie den Wert JJJJ-MM-TTTHH:mm:SS in den START- und END-Zeiten entsprechend. Diese Beispiele dienen nur zu Demonstrationszwecken. Möglicherweise sind zusätzliche REST-API-Abfragespezifikationen oder Filterfunktionen erforderlich, um die gewünschten Daten zurückzugeben. Weitere Informationen und Beispiele finden Sie in der REST-API-Dokumentation: https://developer.dell.com/apis/2378/versions/v3/docs/GettingStarted.md

../global/volumes Beispiel:

https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/volumes?q=type:"MEDIA_TYPE"&fl=location,name,mode,pool,written
https://nsr.amer.lan:9090/nwrestapi/v3/global/volumes?q=type:"Data Domain"&fl=location,name,mode,pool,written

 

Informations supplémentaires

Weitere Informationen zu NetWorker-API-Aufrufen finden Sie im REST API-Entwicklerhandbuch unter "Abfragelistenfilter" (q) und "Feldlistenfilter" (fl) eingestellt.
REST-API-Debugging ist definiert in: NetWorker: So aktivieren Sie das REST-API-Debugging

Alternativ können die folgenden Tests verwendet werden:

Verwenden Sie die folgenden Optionen im REST API-Befehl:
 

Option Zweck
--max-time 3600 Legt eine feste Obergrenze von 3.600 Sekunden (1 Stunde) für die gesamte Übertragung fest (DNS, Verbindung, TLS, Anforderungs- und Antworttext). Wenn der gesamte Vorgang nicht innerhalb von 1 Stunde abgeschlossen ist, wird curl mit einem Timeout-Fehler beendet.
--connect-timeout 60 Begrenzt die Zeit für den Aufbau der TCP/TLS-Verbindung auf 60 Sekunden. Wenn curl nicht innerhalb von 60 Sekunden eine Verbindung herstellen kann, schlägt dieser Versuch fehl. Wenn --retry aktiviert ist, kann der Vorgang erneut durchgeführt werden (vorbehaltlich der folgenden Wiederholungsregeln). Dieser Wert kann nach eigenem Ermessen geändert werden. 
--retry 3 Weist curl an, es bei vorübergehenden Fehlern bis zu dreimal zu wiederholen. Dieser Wert kann nach eigenem Ermessen geändert werden. 
Typische Wiederholungsauslöser:
  • Probleme auf Netzwerkebene (Beispiel: Verbindungs-Timeouts, DNS-Probleme, TLS-Handshake-Fehler).
  • HTTP 5xx Serverfehler (Beispiel: 500, 502, 503, 504).
--retry-delay 5 Legt eine feste Wartezeit von 5 Sekunden zwischen Wiederholungsversuchen fest. Nach einem vorübergehenden Fehler wartet curl 5 Sekunden vor dem nächsten Versuch. Dieser Wert kann nach eigenem Ermessen geändert werden. 
-H "X-NW-AUTHC-BASE-URL:REMOTE_AUTHC_SERVER_ADDRESS:9090" (Optional.) Dies ist nur erforderlich, wenn der NetWorker-Host, der zur Verarbeitung von Anmeldeanforderungen verwendet wird, vom NetWorker-Server im REST API-Endpunkt getrennt ist. Siehe:
NetWorker REST API: So verwenden Sie einen Remote-AUTHC-Server bei der Verarbeitung von RESTAPI-Anforderungen

Windows Powershell:

curl.exe -k -v --compressed `
  --max-time 3600 `
  --connect-timeout 60 `
  --retry 3 `
  --retry-delay 5 `
  -u NETWORKER_USERNAME:'PASSWORD' `
  -H "Accept: application/json" `
  "https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/volumes/ENDPOINT" `
| ConvertFrom-Json `
| ConvertTo-Json -Depth 20 `
| Out-File -Encoding UTF8 OUTPUT_FILE_NAME
HINWEIS: -Depth 20 ist ein Parameter für PowerShell's ConvertTo-Json cmdlet. Es steuert, wie viele Ebenen von geschachtelten Objekten und Arrays enthalten sind, wenn PowerShell Ihre Daten in JSON serialisiert. Die Anzahl der verschachtelten Objekte (wenn überhaupt) kann je nach verwendetem REST API-Endpunkt und potenziellem "Abfragelistenfilter" (q) oder "Feldlistenfilter" (fl) verwendeten Parametern. 20 sollte für NetWorker-REST-API-Aufrufe mehr als ausreichend sein.
Beispiel:
Beispiel für einen curl-Befehl
Im obigen Beispiel wurde die volumes.json Datei in dem Verzeichnis, aus dem curl.exe ausgeführt wurde. Der Inhalt der Datei umfasst die REST API-Payload:
REST API-Ausgabe

Linux:

curl -k -v --compressed \
  --max-time 3600 \
  --connect-timeout 60 \
  --retry 3 \
  --retry-all-errors \
  --retry-delay 5 \
  -u NETWORKER_USERNAME:'PASSWORD' \
  -H "Accept: application/json" \
  "https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/volumes/ENDPOINT" \
  -o volumes.json

Beispiel (ohne -v Der Kürze halber):

[root@nsr ~]# curl -k --compressed \
  --max-time 3600 \
  --connect-timeout 60 \
  --retry 3 \
  --retry-all-errors \
  --retry-delay 5 \
  -u Administrator:'!Password1' \
  -H "Accept: application/json" \
  "https://nsr.amer.lan:9090/nwrestapi/v3/global/volumes?q=type%3A%22Data%20Domain%22&fl=location,name,mode,pool,written" \
  -o volumes.json
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   908    0   908    0     0  22700      0 --:--:-- --:--:-- --:--:-- 22146

In diesem Beispiel wird die Datei "volumes.json" wurde in demselben Verzeichnis erstellt, in dem der Befehl ausgeführt wurde.
Verschiedene Tools können verwendet werden, um die JSON-Formatierung korrekt zu analysieren, die verwendeten Tools können je nach installiertem Betriebssystem und installierter Software variieren.

[root@nsr ~]# cat volumes.json | python -m json.tool
{
    "count": 6,
    "volumes": [
        {
            "location": "ddve01.amer.lan",
            "mode": "Appendable",
            "name": "nsr.amer.lan.dddefault.001",
            "pool": "Data Domain Default",
            "written": {
                "unit": "KB",
                "value": 429
            }
        },
        {
            "location": "ddve01.amer.lan",
            "mode": "Appendable",
            "name": "nsr.amer.lan.dddefault.002",
            "pool": "Data Domain Default",
            "written": {
                "unit": "KB",
                "value": 25917027
            }
        },
        {
            "location": "ddve01.amer.lan",
            "mode": "Appendable",
            "name": "VMBackupPool.001",
            "pool": "VMBackupPool",
            "written": {
                "unit": "KB",
                "value": 209818962
            }
        },
        {
            "location": "ddve01.amer.lan",
            "mode": "Appendable",
            "name": "VMBackupPool.002",
            "pool": "VMBackupPool",
            "written": {
                "unit": "KB",
                "value": 2308309500
            }
        },
        {
            "location": "ddve02.amer.lan",
            "mode": "Appendable",
            "name": "nsr.amer.lan_c.dddefault.001",
            "pool": "Data Domain Default Clone",
            "written": {
                "unit": "KB",
                "value": 36752
            }
        },
        {
            "location": "ddve02.amer.lan",
            "mode": "Appendable",
            "name": "VMClonePool.001",
            "pool": "VMClonePool",
            "written": {
                "unit": "KB",
                "value": 0
            }
        }
    ]
}

Produits

NetWorker
Propriétés de l’article
Numéro d’article: 000172472
Type d’article: Solution
Dernière modification: 01 janv. 2026
Version:  10
Trouvez des réponses à vos questions auprès d’autres utilisateurs Dell
Services de support
Vérifiez si votre appareil est couvert par les services de support.