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. ...
Symptoms
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" oraz "v3/global/jobs" jest zapytaniem wymagającym dużej ilości zasobów i może spowodować przekroczenie limitu czasu żądania w większych środowiskach.
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:
.. Przykład /global/backups:
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"]
Jeśli upływa limit czasu żądań interfejsu API REST wymagających mniejszej ilości zasobów, można ponownie uruchomić usługi serwera NetWorker w celu zwolnienia istniejącego użycia pamięci JVM.