Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 是什么导致DynamoDB操作的执行时间间歇性过长_Node.js_Amazon Web Services_Aws Lambda_Amazon Dynamodb_Aws Sdk - Fatal编程技术网

Node.js 是什么导致DynamoDB操作的执行时间间歇性过长

Node.js 是什么导致DynamoDB操作的执行时间间歇性过长,node.js,amazon-web-services,aws-lambda,amazon-dynamodb,aws-sdk,Node.js,Amazon Web Services,Aws Lambda,Amazon Dynamodb,Aws Sdk,我们正在经历间歇性DynamoDB执行时间,持续时间仅超过10秒。这种情况大约每一到三小时发生一次 DynamoDB操作是从Node.js Lambda(getItem或updateItem)调用的 AWS SDK DynamoDB实例实例化在Lambda处理程序之外发生一次 Lambda和DynamoDB位于同一VPC中,并且启用了DynamoDB端点 Lambda由来自另一个DynamoDB表的DynamoDB流触发,该流每秒可能发生多次 表格设置为按请求支付 分区键是唯一的,我们得到了4

我们正在经历间歇性DynamoDB执行时间,持续时间仅超过10秒。这种情况大约每一到三小时发生一次

  • DynamoDB操作是从Node.js Lambda(getItem或updateItem)调用的
  • AWS SDK DynamoDB实例实例化在Lambda处理程序之外发生一次
  • Lambda和DynamoDB位于同一VPC中,并且启用了DynamoDB端点
  • Lambda由来自另一个DynamoDB表的DynamoDB流触发,该流每秒可能发生多次
  • 表格设置为按请求支付
  • 分区键是唯一的,我们得到了4个lambda的并发性
  • 我们已经给了Lambda 2560MB的内存
  • 我们已经尝试将流的批处理大小从1设置为10,但它从未阻止间歇性的长执行时间
  • 我们已经启用了AWS SDK日志记录,并且可以看到在较长的峰值时间内,DynamoDB调用已经重试了一次——在这些情况下,持续时间始终仅超过10秒
  • 我们已经将AWS SDK超时时间从5秒设置为2秒,但仍然可以看到10秒的延迟
  • 我们将表上的maxRetries设置为10
很难找出长尖峰持续10秒计时的原因。如果有任何人有任何其他想法尝试或建议,将不胜感激。我们还与DynamoDB、Lambda和网络AWS支持部门保持联系,但到目前为止,他们还没有弄清楚到底发生了什么

非常感谢


Sam

你能分享显示重试的日志吗?嘿,Maurice,来自AWS.config.logger的日志读取-[AWS dynamodb 200 1 retries 10.049s]getItem({tableName:xxxxx,Key:{xxxx:{S:xxxx},{xxxx:{S:xxxx})可能问题出在dynamodb上,而不是你的lambda上。你能更新读/写容量单位吗?请记录参数AWS.dynamodb.retryDelayOptions。SDK中设置的默认重试时间是50ms,但听起来很可疑,好像你的客户在10s后重试。@Mickers谢谢你的帮助。我们已将表设置为按请求付费,其中我相信读写能力有任何限制。