NetWorker REST API: Запити HTTP GET періодично затримуються
Zusammenfassung: Інтерфейс (API) прикладної програми передачі представницького стану (REST) NetWorker використовується для запиту інформації (HTTP GET) з сервера NetWorker у середовищі. Запити REST API періодично перериваються, а restapi.log показує внутрішнє повідомлення про помилку сервера через тайм-аут сокета. ...
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]
Команда curl в NetWorker Server REST API показує:
[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
REST API викликає "v3/global/backups" і "v3/global/jobs" сам по собі є ресурсомістким запитом і може спричинити тайм-аут запиту у великих середовищах.
Сервіси NetWorker REST API розміщуються на контейнері сервлету Apache Tomcat Java, який запускається на віртуальній машині Java (JVM). REST API використовує пам'ять JVM для обробки кожного запиту, і було показано, що не вся пам'ять звільняється після ресурсомісткого запиту. Збільшення використання пам'яті JVM може в кінцевому підсумку призвести до того, що інші менш ресурсомісткі запити REST API зазнають тайм-ауту.
Lösung
Уникайте використання інтенсивних запитів ресурсів для отримання інформації з сервера 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.