REST API NetWorker: Время ожидания HTTP-запросов GET периодически истекает

Summary: Для запроса информации (HTTP GET) с сервера NetWorker в среде используется программный интерфейс (API) NetWorker representational state transfer (REST). Время ожидания запросов REST API периодически истекает, и в restapi.log отображается внутренняя ошибка сервера из-за истечения времени ожидания сокета. ...

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

Для запроса информации (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

Cause

REST API вызывает «v3/global/backups", "v3/global/jobs", или "v3/global/volumes» являются ресурсоемкими запросами и могут привести к истечению времени ожидания запроса в более крупных средах.  

ПРИМЕЧАНИЕ. Эта проблема не ограничивается перечисленными конечными точками API REST. Это может произойти на любой крупной глобальной конечной точке, и наблюдения могут различаться в зависимости от сервера.

Сервисы NetWorker REST API размещаются в контейнере Java-сервлетов Apache Tomcat, который работает на виртуальной машине Java (JVM). REST API использует память JVM для обработки каждого запроса, и было показано, что не вся память освобождается после ресурсоемкого запроса. Увеличение использования памяти JVM может в конечном итоге привести к истечению времени ожидания других, менее ресурсоемких запросов REST API.  

Resolution

Избегайте использования ресурсоемких запросов для получения информации от сервера 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 или функции фильтрации. Дополнительные сведения и примеры см. в документации по API-интерфейсу REST: https://developer.dell.com/apis/2378/versions/v3/docs/GettingStarted.md

../global/volumes Пример:

https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/volumes?q=type:"MEDIA_TYPE"&fl=location,name,mode,pool,written
https://nsr.amer.lan:9090/nwrestapi/v3/global/volumes?q=type:"Data Domain"&fl=location,name,mode,pool,written

 

Additional Information

Сведения о вызовах NetWorker API см. в руководстве разработчика REST API, «query list filter» (q) и "фильтр списка полей" (fl) параметры.
Отладка REST API определена в: NetWorker. Включение отладки

по API-интерфейсу REST
В качестве альтернативы можно использовать следующее тестирование:

Используйте следующие параметры в команде REST API:
 

Параметр Назначение
--max-time 3600 Устанавливает жесткое ограничение в 3600 секунд (1 час) для всей передачи (DNS, подключение, TLS, текст запроса и ответа). Если вся операция не будет завершена в течение 1 часа, curl остановится с ошибкой тайм-аута.
--connect-timeout 60 Ограничивает время, отведенное на установление подключения TCP/TLS, 60 секундами. Если curl не может подключиться в течение 60 секунд, эта попытка не будет выполнена. Если параметр --retry включен, можно повторить попытку (в соответствии с приведенными ниже правилами повторной попытки). Это значение можно изменить по своему усмотрению. 
--retry 3 Предписывает curl повторить попытку до трех раз при временных сбоях. Это значение можно изменить по своему усмотрению. 
Типичные триггеры повторной попытки:
  • Проблемы на сетевом уровне (например: Истечение времени ожидания подключения, проблемы DNS, сбои подтверждения подключения по протоколу TLS.
  • HTTP 5xx Ошибки сервера (пример: 500, 502, 503, 504).
--retry-delay 5 Задает фиксированное время ожидания в 5 секунд между попытками повторения. После кратковременного сбоя curl ожидает 5 секунд перед следующей попыткой. Это значение можно изменить по своему усмотрению. 
-H "X-NW-AUTHC-BASE-URL:REMOTE_AUTHC_SERVER_ADDRESS:9090" (По желанию.) Это требуется только в том случае, если хост NetWorker, используемый для обработки запросов на вход, отделен от сервера NetWorker в конечной точке API REST. См.
NetWorker REST API. Как использовать удаленный сервер AUTHC при обработке запросов RESTAPI

Windows PowerShell.

curl.exe -k -v --compressed `
  --max-time 3600 `
  --connect-timeout 60 `
  --retry 3 `
  --retry-delay 5 `
  -u NETWORKER_USERNAME:'PASSWORD' `
  -H "Accept: application/json" `
  "https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/volumes/ENDPOINT" `
| ConvertFrom-Json `
| ConvertTo-Json -Depth 20 `
| Out-File -Encoding UTF8 OUTPUT_FILE_NAME
ПРИМЕЧАНИЕ. -Depth 20 является параметром для PowerShell ConvertTo-Json . Он определяет, сколько уровней вложенных объектов и массивов включается, когда PowerShell сериализует данные в JSON. Количество вложенных объектов (если таковые имеются) может варьироваться в зависимости от используемой конечной точки API REST и потенциального «фильтра списка запросов» (q) или "фильтр списка полей" (fl) используемых параметров. 20 должно быть более чем достаточно для вызовов NetWorker REST API.
Пример:
Пример команды curl
В приведенном выше примере создан объект volumes.json в каталоге, из которого curl.exe был запущен. Содержимое файла включает полезные данные REST API:
Выходные данные API-интерфейса REST

Linux:

curl -k -v --compressed \
  --max-time 3600 \
  --connect-timeout 60 \
  --retry 3 \
  --retry-all-errors \
  --retry-delay 5 \
  -u NETWORKER_USERNAME:'PASSWORD' \
  -H "Accept: application/json" \
  "https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/volumes/ENDPOINT" \
  -o volumes.json

Пример (без -v для краткости):

[root@nsr ~]# curl -k --compressed \
  --max-time 3600 \
  --connect-timeout 60 \
  --retry 3 \
  --retry-all-errors \
  --retry-delay 5 \
  -u Administrator:'!Password1' \
  -H "Accept: application/json" \
  "https://nsr.amer.lan:9090/nwrestapi/v3/global/volumes?q=type%3A%22Data%20Domain%22&fl=location,name,mode,pool,written" \
  -o volumes.json
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   908    0   908    0     0  22700      0 --:--:-- --:--:-- --:--:-- 22146

В этом примере файл "volumes.json» был создан в том же каталоге, из которого была выполнена команда.
Для правильного анализа форматирования json можно использовать различные инструменты, используемые инструменты могут различаться в зависимости от ОС и установленного программного обеспечения.

[root@nsr ~]# cat volumes.json | python -m json.tool
{
    "count": 6,
    "volumes": [
        {
            "location": "ddve01.amer.lan",
            "mode": "Appendable",
            "name": "nsr.amer.lan.dddefault.001",
            "pool": "Data Domain Default",
            "written": {
                "unit": "KB",
                "value": 429
            }
        },
        {
            "location": "ddve01.amer.lan",
            "mode": "Appendable",
            "name": "nsr.amer.lan.dddefault.002",
            "pool": "Data Domain Default",
            "written": {
                "unit": "KB",
                "value": 25917027
            }
        },
        {
            "location": "ddve01.amer.lan",
            "mode": "Appendable",
            "name": "VMBackupPool.001",
            "pool": "VMBackupPool",
            "written": {
                "unit": "KB",
                "value": 209818962
            }
        },
        {
            "location": "ddve01.amer.lan",
            "mode": "Appendable",
            "name": "VMBackupPool.002",
            "pool": "VMBackupPool",
            "written": {
                "unit": "KB",
                "value": 2308309500
            }
        },
        {
            "location": "ddve02.amer.lan",
            "mode": "Appendable",
            "name": "nsr.amer.lan_c.dddefault.001",
            "pool": "Data Domain Default Clone",
            "written": {
                "unit": "KB",
                "value": 36752
            }
        },
        {
            "location": "ddve02.amer.lan",
            "mode": "Appendable",
            "name": "VMClonePool.001",
            "pool": "VMClonePool",
            "written": {
                "unit": "KB",
                "value": 0
            }
        }
    ]
}

Products

NetWorker
Article Properties
Article Number: 000172472
Article Type: Solution
Last Modified: 01 Jan 2026
Version:  10
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.