NetWorker REST API: HTTP GET-begäranden överskrider ibland tidsgränsen
Sammanfattning: API:et (Representational State Transfer) för NetWorker-programgränssnittet (Representational State Transfer) används för att begära information (HTTP GET) från en NetWorker-server i miljön. REST API-frågorna överskrider tillfälligt tidsgränsen och restapi.log visar ett internt serverfelmeddelande på grund av en socket-timeout. ...
Symptom
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]
Ett curl-kommando till NetWorker-serverns REST API visar:
[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
Orsak
REST API-anropen "v3/global/backups" och "v3/global/jobs" Enbart är en resurskrävande fråga och kan orsaka att begäran överskrider tidsgränsen i större miljöer.
NetWorker REST API-tjänsterna finns på en Apache Tomcat Java-servletbehållare som körs på en virtuell Java-maskin (JVM). REST-API:et använder JVM-minne för att bearbeta varje begäran, och det har visat sig att inte allt minne släpps efter en resursintensiv fråga. Ökningen av JVM-minnesanvändningen kan så småningom leda till att andra mindre resurskrävande REST API-begäranden överskrider tidsgränsen.
Upplösning
Undvik att använda resursintensiva begäranden för att hämta information från NetWorker-servern. Till exempel "v3/global/backups" eller "v3/global/clients/CLIENT_NUMBER/backups" med ett definierat tidsintervall kan användas i stället för att använda den globala "v3/global/backups" för att hämta alla säkerhetskopior.
Du kan till exempel begränsa resultatet för saveTime mellan ett angivet tidsintervall. Ett exempel på en fråga för jobb som har slutförts under de senaste 24 timmarna:
.. /global/backups exempel:
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"]
Om tidsgränsen för mindre resurskrävande REST API-begäranden överskrids kan NetWorker Server-tjänsterna startas om för att frigöra den befintliga JVM-minnesanvändningen.