API REST do NetWorker: As solicitações HTTP GET estão com tempo de espera excedido intermitente
Summary: A interface de programa de aplicativo (API) do NetWorker Representational State Transfer (REST) é usada para solicitar informações (HTTP GET) de um servidor NetWorker no ambiente. As consultas da API REST têm tempo de espera excedido intermitentemente, e o restapi.log mostra uma mensagem de erro interna do servidor devido a um tempo de espera excedido do soquete. ...
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]
Um comando curl para a API REST do servidor NetWorker mostra:
[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
A API REST chama "v3/global/backups" e "v3/global/jobs" sozinha é uma consulta que consome muitos recursos e pode fazer com que a solicitação atinja o tempo de espera excedido em ambientes maiores.
Os serviços da API REST do NetWorker são hospedados em um contêiner de servlet Java Apache Tomcat que é executado em uma JVM (Java Virtual Machine). A API REST usa memória JVM para processar cada solicitação, e foi demonstrado que nem toda a memória é liberada após uma consulta com uso intenso de recursos. O aumento na utilização da memória da JVM pode, eventualmente, levar a outras solicitações da API REST com menos uso de recursos ao tempo de espera excedido.
Resolution
Evite usar as solicitações com uso intenso de recursos para recuperar informações do servidor NetWorker. Por exemplo, o "v3/global/backups" ou "v3/global/clients/CLIENT_NUMBER/backups" com um intervalo de tempo definido pode ser usado em vez de usar o global "v3/global/backups" para recuperar todos os backups.
Por exemplo, restrinja os resultados de saveTime entre qualquer intervalo de tempo especificado. Um exemplo de uma consulta para trabalhos que foram concluídos nas últimas 24 horas:
.. Exemplo de /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"]
Se o tempo de espera das solicitações da API REST com menos uso intenso de recursos estiver excedido, os serviços do servidor NetWorker poderão ser reiniciados para liberar o uso da memória JVM existente.