NetWorker REST API:HTTP GET 请求间歇性超时

Summary: NetWorker 表述性状态传输 (REST) 应用程序编程接口 (API) 用于从环境中的 NetWorker 服务器请求信息 (HTTP GET)。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

NetWorker 表述性状态转移 (REST) 应用程序编程接口 (API) 用于从环境中的 NetWorker 服务器请求信息 (HTTP GET)。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]

NetWorker 服务器 REST API 的 curl 命令显示:  

[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“本身是资源密集型查询,在较大环境中可能会导致请求超时。  

提醒:此问题不限于列出的 REST API 端点。它可能发生在任何大型全局端点上,观察结果可能因服务器而异。

NetWorker REST API 服务托管在 Java 虚拟机 (JVM) 上运行的 Apache Tomcat Java servlet 容器上。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"]
提醒:相应地修改 START 和 END 时间中的 YYYY-MM-DDTHH:mm:SS。这些示例仅用于演示目的。可能需要额外的 REST API 查询规范或过滤器函数才能返回所需的数据。REST API 文档中提供了更多信息和示例: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

请参阅 《REST API 开发人员指南 》中有关 NetWorker API 调用的“查询列表筛选器”(q) 和 “字段列表筛选器” (fl) 设置。
REST API 调试在以下位置进行定义:NetWorker:如何启用 REST API 调试

或者,可以使用以下测试:

在 REST API 命令中使用以下选项:
 

选项 目的
--max-time 3600 为整个传输过程(DNS、连接、TLS、请求和响应正文)设置 3600 秒(1 小时)的硬上限。如果整个作未在 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 主机独立于 REST API 端点中的 NetWorker 服务器时,才需要这样做。请参见:
NetWorker REST API:处理 RESTAPI 请求时如何使用远程 AUTHC 服务器

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 cmdlet。它控制当 PowerShell 将数据序列化为 JSON 时包含的嵌套对象和数组的级别。嵌套对象的数量(如果有的话)可能会有所不同,具体取决于所使用的 REST API 端点和任何潜在的“查询列表筛选器”(q) 或 “字段列表筛选器” (fl) 参数。对于 NetWorker REST API 调用,20 应该绰绰有余。
示例:
curl 命令示例
上面的示例创建了 volumes.json 目录中的文件,其中 curl.exe 运行。该文件的内容包括 REST API 有效负载:
REST API 输出

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 كانون الثاني 2026
Version:  10
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.