dar*_*ari 8 lambda amazon-web-services amazon-dynamodb serverless-framework api-gateway
我正在使用无服务器框架.我的Lambda函数连接到DynamoDB表以更新表中的项目.表的读写容量单位为5,禁用auto_scaling.AWS Lambda函数分配了128MB内存.
我已经使用Jmeter进行性能测试.我已经同时发送了1000个请求,一些响应给了我完美的输出,而其他给出了内部服务器错误(502 Bad Gateway).我还分析了cloudwatch的日志,只获得了Task Timeout错误.任何人都可以建议我为什么我得到这个错误,以及如何解决它?
Dun*_*dan 11
使用无服务器框架时,AWS Lambda函数的默认超时为6秒.只需将其更改为更高的值,如文档中所述:
functions:
hello:
...
timeout: 10 # optional, in seconds, default is 6
Run Code Online (Sandbox Code Playgroud)
由于您提到您的 DynamoDB 表只配置了 5 个 WCU,这意味着每秒只允许 5 次写入。
DynamoDB 确实提供了突发容量,允许您使用 300 秒的累积容量(在 5 WCU 下相当于 1500 个总写入请求),但一旦这些容量耗尽,它就会开始节流。
DynamoDB 客户端具有内置的自动重试功能,具有指数退避功能,并且它足够智能,可以识别节流,因此如果重复节流,它会将重试减慢到单次写入可能需要几秒钟才能成功完成的程度。
您的 Lambda 函数很可能在 6 秒时超时,因为该函数正在等待重试 Dynamo。
因此,在进行负载测试时,请确保您的依赖项都得到了适当的扩展。在每秒 1000 个请求时,您应该确保相应地扩展 DynamoDB 表和/或索引的读/写容量分配。
| 归档时间: |
|
| 查看次数: |
3928 次 |
| 最近记录: |