REST API NetWorker: Время ожидания HTTP-запросов GET периодически истекает
Сводка: Для запроса информации (HTTP GET) с сервера NetWorker в среде используется программный интерфейс (API) NetWorker representational state transfer (REST). Время ожидания запросов REST API периодически истекает, и в restapi.log отображается внутренняя ошибка сервера из-за истечения времени ожидания сокета. ...
Симптомы
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]
Команда curl в программном интерфейсе REST API сервера NetWorker отображает следующее:
[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
Причина
REST API вызывает «v3/global/backups" и "v3/global/jobs» сам по себе является ресурсоемким запросом и может привести к истечению времени ожидания запроса в более крупных средах.
Сервисы NetWorker REST API размещаются в контейнере Java-сервлетов Apache Tomcat, который работает на виртуальной машине Java (JVM). REST API использует память JVM для обработки каждого запроса, и было показано, что не вся память освобождается после ресурсоемкого запроса. Увеличение использования памяти JVM может в конечном итоге привести к истечению времени ожидания других, менее ресурсоемких запросов REST API.
Разрешение
Избегайте использования ресурсоемких запросов для получения информации от сервера NetWorker. Например, команда «v3/global/backups" или "v3/global/clients/CLIENT_NUMBER/backups" с определенным диапазоном времени можно использовать вместо использования глобального "v3/global/backups», чтобы извлечь все резервные копии.
Например, ограничьте результаты для saveTime любым указанным диапазоном времени. Пример запроса для задач, которые были завершены в течение последних 24 часов:
.. Пример /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"]
Если время ожидания менее ресурсоемких запросов REST API истекает, службы сервера NetWorker можно перезапустить, чтобы освободить используемую память JVM.