Multithreading S3Client vs S3AsyncClient

Multithreading S3Client vs S3AsyncClient,multithreading,amazon-web-services,aws-lambda,netty,aws-billing,Multithreading,Amazon Web Services,Aws Lambda,Netty,Aws Billing,我正在使用AWS提供的java SDK开发AWS Lambda。我需要从S3桶里拿一个物体。 我使用S3客户端(使用apache HTTP作为自定义配置) 时间是可以接受的 现在我想用S3AsyncClient(netty)替换我的S3Client。 我使用AWS文档中解释的自定义配置 我定义了一个秒表来计算整个lambda处理时间。 我可以看到一些改进: 总时间:254.4毫秒(从我的秒表开始) 但是AWS增加了+/-2250毫秒的计费时间 16:34:22 结束请求ID:3a8a2313-f

我正在使用AWS提供的java SDK开发AWS Lambda。我需要从S3桶里拿一个物体。 我使用S3客户端(使用apache HTTP作为自定义配置) 时间是可以接受的

现在我想用S3AsyncClient(netty)替换我的S3Client。 我使用AWS文档中解释的自定义配置

我定义了一个秒表来计算整个lambda处理时间。 我可以看到一些改进:

总时间:254.4毫秒(从我的秒表开始)

但是AWS增加了+/-2250毫秒的计费时间

16:34:22 结束请求ID:3a8a2313-f3c7-4933-85a3-2f18e8876364 16:34:22 报告请求ID:3a8a2313-f3c7-4933-85a3-2f18e8876364持续时间:2460.98毫秒计费持续时间:2500毫秒

所以我付出了更多

这种差异从何而来? 我认为一些netty/executor线程保持等待状态,而AWS会杀死它们。。。但我不确定

我已配置我的executor服务。 在lambda的结尾,我尝试使用executor.shutdown()停止所有线程; 但这不会改变任何事情

作为S3AsyncClient扩展的AutoCloseable,我已经在try with resources语句中定义了它

我确定它发生在冷/热启动时

需要一些帮助来理解这种行为

多谢各位