Interfejs API REST NetWorker: Żądania HTTP GET sporadycznie przekraczają limit czasu

Summary: Interfejs aplikacji (API) transferu stanu reprezentacji (REST) NetWorker służy do żądania informacji (HTTP GET) z serwera NetWorker w środowisku. Interfejs API REST sporadycznie przekracza limit czasu, a restapi.log wyświetla wewnętrzny komunikat o błędzie serwera z powodu przekroczenia limitu czasu gniazda. ...

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

Interfejs aplikacji (API) NetWorker Representational State Transfer (REST) służy do żądania informacji (HTTP GET) z serwera NetWorker w środowisku. Interfejs API REST sporadycznie przekracza limit czasu, a restapi.log wyświetla wewnętrzny komunikat o błędzie serwera z powodu przekroczenia limitu czasu gniazda.  

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]

Polecenie curl do interfejsu API REST serwera NetWorker pokazuje:  

[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

Wywołania interfejsu API REST "v3/global/backups", "v3/global/jobs", lub "v3/global/volumes" są zapytaniami wymagającymi dużej ilości zasobów i mogą spowodować przekroczenie limitu czasu żądania w większych środowiskach.  

UWAGA: Ten problem nie ogranicza się do wymienionych punktów końcowych interfejsu API REST. Problem może wystąpić w każdym dużym globalnym punkcie końcowym, a obserwacje mogą się różnić w zależności od serwera.

Usługi interfejsu API REST NetWorker są hostowane w kontenerze serwletów Java Apache Tomcat, który jest uruchamiany na wirtualnej maszynie Java (JVM). Interfejs API REST używa pamięci JVM do przetwarzania każdego żądania i wykazano, że nie cała pamięć jest zwalniana po zapytaniu wymagającym dużej ilości zasobów. Wzrost wykorzystania pamięci JVM może ostatecznie doprowadzić do przekroczenia limitu czasu innych, mniej zasobożernych żądań interfejsu API REST.  

Resolution

Należy unikać korzystania z żądań wymagających dużej ilości zasobów w celu pobierania informacji z serwera NetWorker. Na przykład "v3/global/backups" lub "v3/global/clients/CLIENT_NUMBER/backups" ze zdefiniowanym zakresem czasu może być używany zamiast używać globalnego "v3/global/backups", aby pobrać wszystkie kopie zapasowe.

Na przykład ogranicz wyniki saveTime między dowolnym określonym zakresem czasu. Przykład zapytania dotyczącego zadań, które zostały ukończone w ciągu ostatnich 24 godzin:
 

../global/backups Przykład:

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"]
UWAGA: Zmodyfikuj odpowiednio RRRR-MM-DDT HH:mm:SS w godzinach START i END. Przykłady te służą wyłącznie do celów demonstracyjnych. Do zwrócenia żądanych danych mogą być wymagane dodatkowe specyfikacje zapytań interfejsu API REST lub funkcje filtrowania. Więcej informacji i przykłady są dostępne w dokumentacji interfejsu API REST: https://developer.dell.com/apis/2378/versions/v3/docs/GettingStarted.md

../global/volumes Przykład:

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

Zapoznaj się z podręcznikiem dla programistów interfejsu API REST dotyczącym wywołań interfejsu API NetWorker, "filtru listy zapytań" (q) i "filtr listy pól" (fl) ustawień.
Debugowanie interfejsu REST API jest zdefiniowane w: NetWorker: Jak włączyć debugowanie

interfejsu API RESTAlternatywnie można użyć następujących testów:

Użyj następujących opcji w poleceniu interfejsu API REST:
 

Opcja Zastosowanie
--max-time 3600 Ustawia twardy limit 3600 sekund (1 godzina) dla całego transferu (DNS, połączenie, TLS, żądanie i treść odpowiedzi). Jeśli cała operacja nie zostanie zakończona w ciągu 1 godziny, curl zatrzyma się z błędem przekroczenia limitu czasu.
--connect-timeout 60 Ogranicza czas przeznaczony na nawiązanie połączenia TCP/TLS do 60 sekund. Jeśli curl nie może nawiązać połączenia w ciągu 60 sekund, próba zakończy się niepowodzeniem. Po włączeniu opcji --retry można spróbować ponownie (zgodnie z poniższymi regułami ponawiania prób). Wartość tę można zmienić według własnego uznania. 
--retry 3 Instruuje curl, aby ponowił próbę do trzech razy w przypadku przejściowych błędów. Wartość tę można zmienić według własnego uznania. 
Typowe wyzwalacze ponawiania prób:
  • Problemy na poziomie sieci (przykład: Przekroczenie limitu czasu połączenia, problemy z systemem DNS, niepowodzenia uzgadniania TLS).
  • HTTP 5xx Błędy serwera (przykład: 500, 502, 503, 504).
--retry-delay 5 Ustawia stały czas oczekiwania wynoszący 5 sekund między ponownymi próbami. Po przejściowym niepowodzeniu curl czeka 5 sekund przed następną próbą. Wartość tę można zmienić według własnego uznania. 
-H "X-NW-AUTHC-BASE-URL:REMOTE_AUTHC_SERVER_ADDRESS:9090" (Opcjonalnie). Jest to wymagane tylko wtedy, gdy host NetWorker, który jest używany do przetwarzania żądań logowania, jest oddzielony od serwera NetWorker w punkcie końcowym interfejsu API REST. Zobacz:
Interfejs API REST NetWorker: Jak korzystać ze zdalnego serwera AUTHC podczas przetwarzania żądań RESTAPI

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
UWAGA: -Depth 20 jest parametrem dla programu PowerShell ConvertTo-Json . Kontroluje liczbę poziomów zagnieżdżonych obiektów i tablic, które są uwzględniane, gdy program PowerShell serializuje dane do formatu JSON. Liczba zagnieżdżonych obiektów (jeśli w ogóle występują) może się różnić w zależności od używanego punktu końcowego interfejsu API REST i potencjalnego "filtru listy zapytań" (q) lub "filtr listy pól" (fl) zastosowanych parametrów. 20 powinno być więcej niż wystarczające dla wywołań interfejsu API REST NetWorker.
Przykład:
curl — przykład polecenia
W powyższym przykładzie utworzono metodę volumes.json w katalogu, z którego curl.exe został uruchomiony. Zawartość pliku zawiera ładunek interfejsu API REST:
Dane wyjściowe interfejsu API REST

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

Przykład (bez -v dla zwięzłości):

[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

W tym przykładzie plik "volumes.json" został utworzony w tym samym katalogu, z którego uruchomiono polecenie.
Do prawidłowego analizowania formatowania JSON można użyć różnych narzędzi, które mogą się różnić w zależności od systemu operacyjnego i zainstalowanego oprogramowania.

[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.