NetWorker REST-API: HTTP GET-anmodninger får periodisk timeout
Riepilogo: NetWorker REST-applikationsprogramgrænsefladen (REST) bruges til at anmode om oplysninger (HTTP GET) fra en NetWorker-server i miljøet. REST API-forespørgslerne får periodisk timeout, og restapi.log viser en intern serverfejlmeddelelse på grund af en socket-timeout. ...
Sintomi
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]
En curl-kommando til NetWorker Server REST API viser:
[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
Causa
REST API kalder "v3/global/backups" og "v3/global/jobs" alene er en ressourcekrævende forespørgsel og kan få anmodningen til timeout i større miljøer.
NetWorker REST API-tjenesterne hostes på en Apache Tomcat Java servlet-beholder, der køres på en Java Virtual Machine (JVM). REST API bruger JVM-hukommelse til at behandle alle anmodninger, og det har vist sig, at ikke al hukommelsen frigives efter en ressourceintensiv forespørgsel. Stigningen i JVM-hukommelsesudnyttelse kan i sidste ende føre til andre mindre ressourceintensive REST API-anmodninger om timeout.
Risoluzione
Undgå at bruge ressourceintensive anmodninger om at hente oplysninger fra NetWorker-serveren. For eksempel "v3/global/backups" eller "v3/global/clients/CLIENT_NUMBER/backups" med et defineret tidsinterval kan bruges i stedet for at bruge den globale "v3/global/backups" for at hente alle sikkerhedskopierne.
Du kan f.eks. begrænse resultaterne for saveTime mellem et angivet tidsinterval. Et eksempel på en forespørgsel om job, der er fuldført inden for de seneste 24 timer:
.. /global/backups eksempel:
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"]
Hvis der opstår timeout for mindre ressourcekrævende REST API-anmodninger, kan NetWorker-servertjenesterne genstartes for at frigive det eksisterende JVM-hukommelsesforbrug.