You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Electron应用调用Amazon Rekognition随机超时问题排查求助

排查与解决Rekognition API随机超时问题

排查步骤

  • 验证网络层拦截规则

    1. 在客户机器上循环执行测试命令,模拟SDK的请求行为:curl -v https://rekognition.<你的区域>.amazonaws.com(替换为实际使用的AWS区域),观察是否在固定次数请求后出现超时,确认是否是请求触发了拦截阈值。
    2. 让客户检查企业防火墙/UTM设备的规则,重点查看是否有针对AWS Rekognition端点的请求频率限制、并发连接数限制,或者“异常流量”自动拦截策略——很多企业防火墙会把短时间内的重复API请求判定为恶意流量。
    3. 排查本地安全软件:检查Windows Defender防火墙、第三方杀毒软件的网络防护模块,是否在几次请求后自动生成了目标IP(3.226.60.54)的拦截规则。
  • 排查SDK连接池行为

    1. @aws-sdk默认会复用TCP长连接,部分网络设备对长连接有闲置超时或数量限制。可以临时修改SDK配置关闭连接复用,测试是否解决问题:
      const { RekognitionClient, NodeHttpHandler } = require("@aws-sdk/client-rekognition");
      const client = new RekognitionClient({
        region: "你的AWS区域",
        requestHandler: new NodeHttpHandler({
          keepAlive: false, // 禁用长连接复用
          socketTimeout: 8000,
          connectionTimeout: 8000
        })
      });
      
    2. 查看SDK调试日志中的连接ID,确认后续请求是复用旧连接还是新建连接后被拦截。如果是复用连接超时,说明网络设备主动断开了长连接,而SDK未处理重连逻辑。
  • 排除Electron与DNS问题

    1. 用纯Node.js脚本(脱离Electron环境)调用Rekognition API,测试是否同样出现超时——如果正常,说明问题出在Electron的Chromium网络层配置(比如代理、安全策略)。
    2. 检查客户机器的Electron应用代理设置,可临时添加启动参数禁用代理:app.commandLine.appendSwitch('no-proxy-server'),再测试请求情况。
    3. 执行nslookup rekognition.<你的区域>.amazonaws.com多次查询,确认DNS解析是否返回多个IP,是否存在DNS缓存或污染导致固定IP被拦截。

解决建议

  • 针对防火墙拦截:
    1. 调整SDK请求速率,在每次API调用后添加短暂延迟(如await new Promise(resolve => setTimeout(resolve, 1000))),降低请求密度,避免触发拦截阈值。
    2. 联系客户网络管理员,将Rekognition的服务域名(rekognition.<你的区域>.amazonaws.com)加入防火墙白名单,或调整拦截策略的频率/连接数限制。
  • 针对长连接问题:
    保持SDK禁用长连接的配置,或设置更短的连接超时时间,让SDK自动触发重连逻辑。
  • 针对DNS/端点问题:
    在SDK配置中显式指定服务域名,避免硬编码IP,确保每次请求都通过正常DNS解析获取可用IP。

内容的提问来源于stack exchange,提问作者Igor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 03:40:22