NetWorker REST API: Er treedt af en toe een time-out op voor HTTP GET-verzoeken

Summary: De NetWorker Representational State Transfer (REST) Application Program Interface (API) wordt gebruikt om informatie (HTTP GET) op te vragen bij een NetWorker-server in de omgeving. Er treedt af en toe een time-out op voor de REST API-query's en de restapi.log geeft een interne serverfoutmelding weer als gevolg van een time-out van de socket. ...

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

De NetWorker Representational State Transfer (REST) Application Program Interface (API) wordt gebruikt om informatie (HTTP GET) op te vragen bij een NetWorker-server in de omgeving. Er treedt af en toe een time-out op voor de REST API-query's en de restapi.log geeft een interne serverfoutmelding weer als gevolg van een time-out van de socket.  

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]

Een curl-opdracht voor de NetWorker Server REST API laat het volgende zien:  

[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

De REST API roept "v3/global/backups", "v3/global/jobs", of "v3/global/volumes" alleen zijn resource-intensieve query's en kunnen leiden tot een time-out van de aanvraag in grotere omgevingen.  

OPMERKING: Dit probleem is niet beperkt tot de vermelde REST API-eindpunten. Het kan op elk groot wereldwijd eindpunt voorkomen en waarnemingen kunnen per server verschillen.

De NetWorker REST API-services worden gehost op een Apache Tomcat Java servlet-container die wordt uitgevoerd op een Java Virtual Machine (JVM). De REST API maakt gebruik van JVM-geheugen om elke aanvraag te verwerken en het is aangetoond dat niet al het geheugen wordt vrijgegeven na een resource-intensieve query. De toename in JVM-geheugengebruik kan uiteindelijk leiden tot andere, minder resource-intensieve REST API-aanvragen voor time-outs.  

Resolution

Vermijd het gebruik van de resource-intensieve aanvragen om informatie op te halen van de NetWorker-server. Bijvoorbeeld, de "v3/global/backups" of "v3/global/clients/CLIENT_NUMBER/backups" met een gedefinieerd tijdsbereik kan worden gebruikt in plaats van de algemene "v3/global/backups" om alle back-ups op te halen.

Beperk bijvoorbeeld de resultaten voor saveTime tussen een opgegeven tijdsbereik. Een voorbeeld van een query voor taken die in de afgelopen 24 uur zijn voltooid:
 

../global/backups Voorbeeld:

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"]
OPMERKING: Wijzig de YYYY-MM-DDT UU:mm:SS in de BEGIN- en EIND-tijd dienovereenkomstig. Deze voorbeelden zijn alleen bedoeld ter demonstratie. Er kunnen aanvullende REST API-queryspecificaties of filterfuncties nodig zijn om de gewenste data te retourneren. Meer informatie en voorbeelden zijn beschikbaar in de documentatie van de REST API: https://developer.dell.com/apis/2378/versions/v3/docs/GettingStarted.md

../global/volumes Voorbeeld:

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

 

Additional Information

Raadpleeg de REST API-ontwikkelaarshandleiding met betrekking tot NetWorker API-aanroepen, "query list filter" (q) en "Veldenlijstfilter" (fl) instellingen.
REST API-foutopsporing wordt gedefinieerd in: NetWorker: Hoe REST API-foutopsporing

in te schakelenU kunt ook de volgende tests gebruiken:

Gebruik de volgende opties in de REST API-opdracht:
 

Optie Doel
--max-time 3600 Hiermee stelt u een harde limiet in van 3600 seconden (1 uur) voor de gehele overdracht (DNS, Connect, TLS, aanvraag en antwoordtekst). Als de hele bewerking niet binnen 1 uur is voltooid, stopt curl met een time-outfout.
--connect-timeout 60 Hiermee beperkt u de tijd die is toegestaan om de TCP/TLS-verbinding tot stand te brengen tot 60 seconden. Als curl niet binnen 60 seconden verbinding kan maken, mislukt die poging. Als --retry is ingeschakeld, kan het opnieuw proberen (met inachtneming van onderstaande regels voor opnieuw proberen). Deze waarde kan naar eigen goeddunken worden gewijzigd. 
--retry 3 Instrueert curl om het tot drie keer opnieuw te proberen bij tijdelijke fouten. Deze waarde kan naar eigen goeddunken worden gewijzigd. 
Typische triggers voor nieuwe pogingen:
  • Problemen op netwerkniveau (bijvoorbeeld: Time-outs voor verbindingen, DNS-problemen, TLS-handshakefouten).
  • HTTP 5xx Serverfouten (bijvoorbeeld: 500, 502, 503, 504).
--retry-delay 5 Hiermee stelt u een vaste wachttijd van 5 seconden in tussen nieuwe pogingen. Na een tijdelijke storing wacht curl 5 seconden voor de volgende poging. Deze waarde kan naar eigen goeddunken worden gewijzigd. 
-H "X-NW-AUTHC-BASE-URL:REMOTE_AUTHC_SERVER_ADDRESS:9090" (Optioneel.) Dit is alleen vereist als de NetWorker-host die wordt gebruikt voor het verwerken van aanmeldingsverzoeken, gescheiden is van de NetWorker-server in het REST API-eindpunt. Zie:
NetWorker REST API: Een externe AUTHC-server gebruiken bij het verwerken van RESTAPI-aanvragen

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
OPMERKING: -Depth 20 is een parameter voor de PowerShell's ConvertTo-Json Cmdlet. Het bepaalt hoeveel niveaus van geneste objecten en arrays worden opgenomen wanneer PowerShell uw data serialiseert naar JSON. Het aantal geneste objecten (als dat al het geval is) kan variëren, afhankelijk van het gebruikte REST API-eindpunt en een mogelijk querylijstfilter (q) of "Veldenlijstfilter" (fl) gebruikte parameters. 20 zou meer dan voldoende moeten zijn voor NetWorker REST API-aanroepen.
Voorbeeld:
Voorbeeld van curl-opdracht
In het bovenstaande voorbeeld is de volumes.json bestand in de map van waaruit curl.exe werd uitgevoerd. De inhoud van het bestand bevat de REST API-payload:
REST API-uitvoer

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

Voorbeeld (zonder -v Kortheidshalve):

[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 dit voorbeeld wordt het bestand "volumes.json" is gemaakt in dezelfde map van waaruit de opdracht werd uitgevoerd.
Er kunnen verschillende tools worden gebruikt om de json-opmaak correct te parseren, de gebruikte tools kunnen variëren, afhankelijk van het besturingssysteem en de geïnstalleerde software.

[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
            }
        }
    ]
}

Products

NetWorker
Article Properties
Article Number: 000172472
Article Type: Solution
Last Modified: 01 Jan 2026
Version:  10
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.