NetWorker REST API: Er treedt af en toe een time-out op voor HTTP GET-verzoeken
Zusammenfassung: 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. ...
Symptome
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
Ursache
De REST API roept "v3/global/backups" en "v3/global/jobs" alleen is een resource-intensieve query en kan leiden tot een time-out van de aanvraag in grotere omgevingen.
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.
Lösung
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"]
Als er een time-out optreedt voor minder resource-intensieve REST API-aanvragen, kunnen de NetWorker Server-services opnieuw worden gestart om het bestaande JVM-geheugengebruik vrij te geven.