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

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

Данная статья применяется к Данная статья не применяется к Эта статья не привязана к какому-либо конкретному продукту. В этой статье указаны не все версии продуктов.

Симптомы

Для запроса информации (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", или "v3/global/volumes» являются ресурсоемкими запросами и могут привести к истечению времени ожидания запроса в более крупных средах.  

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

Сервисы 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 или функции фильтрации. Дополнительные сведения и примеры см. в документации по 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

 

Дополнительная информация

Сведения о вызовах 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
            }
        }
    ]
}

Продукты

NetWorker
Свойства статьи
Номер статьи: 000172472
Тип статьи: Solution
Последнее изменение: 01 Jan 2026
Версия:  10
Получите ответы на свои вопросы от других пользователей Dell
Услуги технической поддержки
Проверьте, распространяются ли на ваше устройство услуги технической поддержки.