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

Résumé: NetWorker 表述性状态传输 (REST) 应用程序编程接口 (API) 用于从环境中的 NetWorker 服务器请求信息 (HTTP GET)。REST API 查询间歇性超时,并且由于套接字超时,restapi.log显示内部服务器错误消息。

Cet article concerne Cet article ne concerne pas Cet article n’est associé à aucun produit spécifique. Toutes les versions du produit ne sont pas identifiées dans cet article.

Symptômes

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 请求超时。  

Résolution

避免使用资源密集型请求从 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

 

Informations supplémentaires

请参阅 《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
            }
        }
    ]
}

Produits

NetWorker
Propriétés de l’article
Numéro d’article: 000172472
Type d’article: Solution
Dernière modification: 01 Jan 2026
Version:  10
Trouvez des réponses à vos questions auprès d’autres utilisateurs Dell
Services de support
Vérifiez si votre appareil est couvert par les services de support.