繁体   English   中英

在没有任何 CloudWatch 日志的情况下运行多个请求时 AWS API 网关出错

[英]Error on AWS API Gateway when running multiple requests without any CloudWatch logs

我正在使用Artillery通过无服务器框架针对使用 AWS API 网关部署的 REST API(边缘端点)运行小型负载测试性能

此 API 配置了自定义域/ACM 证书,并且由于我使用的是 Edge 端点类型,它还有一个 CloudFront。

这是请求的流程: Cloudfront -> API Gateway -> Lambda Authorizer -> Lambda -> Other services

一旦我开始在 60 秒内每秒运行 100 个请求(总共 6000 个请求),结果就很好(只有 HTTP 202)但是当我以每秒 200 个请求(总共 12000 个请求)开始时,我开始得到一些错误在 Artillery 中被描述为“ETIMEDOUT”。 通过查看 CloudWatch 日志,我找不到任何与此相关的错误,而且我只能看到成功的请求。 我检查了作为流程一部分的两个 lambdas 指标,这些指标也只显示成功调用的次数,并且 lambdas 执行没有错误,例如没有 lambda 超时。

例如,在 Artillery 报告中,我得到 9666 个成功响应,这个值与我在 lambda 次调用中找到的值相同。

火炮报告(示例):

errors.ETIMEDOUT: .............................................................. 2334
http.codes.202: ................................................................ 9666
http.request_rate: ............................................................. 179/sec
http.requests: ................................................................. 12000
http.response_time:
  min: ......................................................................... 143
  max: ......................................................................... 601
  median: ...................................................................... 179.5
  p95: ......................................................................... 407.5
  p99: ......................................................................... 432.7
http.responses: ................................................................ 9666
vusers.completed: .............................................................. 9666
vusers.created: ................................................................ 12000
vusers.created_by_name.0: ...................................................... 12000
vusers.failed: ................................................................. 2334
vusers.session_length:
  min: ......................................................................... 190
  max: ......................................................................... 7530.3
  median: ...................................................................... 237.5
  p95: ......................................................................... 459.5
  p99: ......................................................................... 507.8

注意:此“错误”结果没有模式。 每次执行都会产生不同数量的“ETIMEDOUT”错误。

火炮 yml 测试定义

config:
  target: 'https://testing.mydomain.com'
  phases:
    - duration: 60
      arrivalRate: 200
  defaults:    
    headers:
      Authorization: 'Bearer XXXXXX'
scenarios:
  - flow:
    - post:
        url: "/create"
        json:
          clt: "{{ $randomString() }}"
          value: "10"
          prd: "abcdefg"
    log: "Sending info to {{ $randomString() }}"

通过检查 API 网关的 CloudWatch 指标,似乎只有成功的请求(上例中的 9666)到达 API。我正在检查“计数”指标:

在此处输入图像描述 在此处输入图像描述

我想知道是否有任何我找不到的 API 限制。

我相信你可能会在这里达到这个限制。

https://docs.aws.amazon.com/apigateway/latest/developerguide/limits.html

"10,000 请求/秒 (RPS) 加上令牌桶算法提供的额外突发容量,使用最大桶容量 5,000 请求。*注意突发配额由 API 网关服务团队根据整体 RPS 配额确定该地区的帐户。这不是客户可以控制或请求更改的配额。”

我可能是错的,但值得检查这些限制集。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM