API REST de NetWorker: Se agota el tiempo de espera de las solicitudes HTTP GET de forma intermitente

Summary: La interfaz de programación de aplicaciones (API) de transferencia de estado representacional (REST) de NetWorker se utiliza para solicitar información (HTTP GET) desde un NetWorker Server en el ambiente. Se agota el tiempo de espera de las consultas de la API REST de forma intermitente y el restapi.log muestra un mensaje de error interno del servidor debido a un tiempo de espera agotado del conector. ...

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

La interfaz de programación de aplicaciones (API) de NetWorker Representational State Transfer (REST) se utiliza para solicitar información (HTTP GET) desde un NetWorker Server en el ambiente. Se agota el tiempo de espera de las consultas de la API REST de forma intermitente y el restapi.log muestra un mensaje de error interno del servidor debido a un tiempo de espera agotado del conector.  

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]

Un comando curl a la API REST de NetWorker Server muestra lo siguiente:  

[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

La API REST llama a "v3/global/backups", "v3/global/jobs", o "v3/global/volumes" por sí solas son consultas de uso intensivo de recursos y pueden hacer que se agote el tiempo de espera de la solicitud en entornos más grandes.  

NOTA: Este problema no se limita a los terminales de API REST enumerados. Puede ocurrir en cualquier terminal global de gran tamaño y las observaciones pueden variar según el servidor.

Los servicios de API REST de NetWorker se alojan en un contenedor de servlets Java Apache Tomcat que se ejecuta en una máquina virtual Java (JVM). La API REST utiliza la memoria de JVM para procesar cada solicitud y se ha demostrado que no toda la memoria se libera después de una consulta con uso intensivo de recursos. El aumento en la utilización de la memoria de JVM puede llegar a provocar que se agote el tiempo de espera de otras solicitudes de API REST con uso intensivo de recursos.  

Resolution

Evite el uso de solicitudes con uso intensivo de recursos para recuperar información de NetWorker Server. Por ejemplo, la opción "v3/global/backups" o "v3/global/clients/CLIENT_NUMBER/backups" con un rango de tiempo definido se puede usar en lugar de usar el " globalv3/global/backups" para recuperar todos los respaldos.

Por ejemplo, restrinja los resultados de saveTime entre cualquier rango de tiempo especificado. Un ejemplo de una consulta de trabajos que se completaron en las últimas 24 horas:
 

../global/backups ejemplo:

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"]
NOTA: Modifique AAAA-MM-DDTHH:mm:SS en las horas START y END según corresponda. Estos ejemplos se proporcionan solo con fines de demostración. Es posible que se requieran especificaciones de consulta adicionales de la API REST o funciones de filtro para devolver los datos deseados. Encontrará más información y ejemplos en la documentación de la API REST: https://developer.dell.com/apis/2378/versions/v3/docs/GettingStarted.md

../global/volumes ejemplo:

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

Consulte la Guía para desarrolladores de API REST con respecto a las llamadas a la API de NetWorker, "query list filter" (q) y "filtro de lista de campos" (fl) ajustes.
La depuración de la API REST se define en: NetWorker: Cómo habilitar la depuración de la API REST

Como alternativa, se pueden realizar las siguientes pruebas:

Utilice las siguientes opciones en el comando de la API REST:
 

Opción Propósito:
--max-time 3600 Establece un límite máximo de 3600 segundos (1 hora) para toda la transferencia (DNS, conexión, TLS, solicitud y cuerpo de respuesta). Si no finaliza toda la operación en un plazo de 1 hora, curl se detiene con un error de tiempo de espera agotado.
--connect-timeout 60 Limita el tiempo permitido para establecer la conexión TCP/TLS a 60 segundos. Si curl no se puede conectar en un plazo de 60 segundos, falla ese intento. Con --retry habilitado, puede volver a intentarlo (sujeto a las siguientes reglas de reintento). Este valor se puede cambiar según su criterio. 
--retry 3 Indica a curl que reintente hasta tres veces en fallas transitorias. Este valor se puede cambiar según su criterio. 
Desencadenadores de reintento típicos:
  • Problemas en el nivel de red (ejemplo: Tiempos de espera agotados de conexión, problemas de DNS, fallas de protocolo de enlace de TLS).
  • HTTP 5xx Errores del servidor (ejemplo: 500, 502, 503, 504).
--retry-delay 5 Establece una espera fija de 5 segundos entre los reintentos. Después de una falla transitoria, curl espera 5 segundos antes del siguiente intento. Este valor se puede cambiar según su criterio. 
-H "X-NW-AUTHC-BASE-URL:REMOTE_AUTHC_SERVER_ADDRESS:9090" (Opcional). Esto solo es necesario si el host de NetWorker que se utiliza para procesar las solicitudes de inicio de sesión es independiente del servidor de NetWorker en el terminal de la API REST. Consulte:
API REST de NetWorker: Cómo usar un servidor AUTHC remoto cuando se procesan solicitudes de API REST

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
NOTA: -Depth 20 es un parámetro para la propiedad ConvertTo-Json . Controla cuántos niveles de objetos anidados y matrices se incluyen cuando PowerShell serializa los datos en JSON. La cantidad de objetos anidados (si los hay) puede variar según el terminal de la API REST utilizado y cualquier posible "filtro de lista de consultas" (q) o "filtro de lista de campos" (fl) parámetros utilizados. 20 debe ser más que suficiente para las llamadas a la API REST de NetWorker.
Ejemplo:
Ejemplo de comando curl
En el ejemplo anterior, se creó el archivo volumes.json archivo en el directorio desde el cual se procede curl.exe se ejecutó. El contenido del archivo incluye la carga útil de la API REST:
Salida de la 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

Ejemplo (sin -v En aras de la brevedad):

[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

En este ejemplo, el archivo "volumes.json" se creó en el mismo directorio desde el que se ejecutó el comando.
Se pueden utilizar diferentes herramientas para analizar correctamente el formato json. Las herramientas utilizadas pueden variar según el sistema operativo y el software instalado.

[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.