S3Client против S3AsyncClient - PullRequest
0 голосов
/ 28 марта 2020

Я работаю над AWS Lambda с java SDK, предоставленным AWS. Мне нужно получить объект из ведра S3. Я использую S3Client для него (с apache HTTP в качестве пользовательской конфигурации). Время приемлемо.

Теперь я собираюсь заменить свой S3Client на S3AsyncClient (netty). Я использую пользовательскую конфигурацию, как описано в документации AWS.

Я определил секундомер для подсчета полного времени лямбда-обработки. Я вижу некоторые улучшения:

общее время: 254,4 мс (из моего секундомера)

НО AWS добавляет +/- 2250 мс времени биллинга!

16: 34:22 КОНЕЦ RequestId: 3a8a2313-f3c7-4933-85a3-2f18e8876364 16:34:22 ОТЧЕТ RequestId: 3a8a2313-f3c7-4933-85a3-2f18e8876364 Продолжительность: 2460,98 мс Объявленная продолжительность: 2500 мс

* 1012 Так намного больше!

Откуда эта разница? Я думаю, что некоторые потоки netty / executor остаются в состоянии WAITING STATE, пока AWS их убивает ... Но не уверен насчет этого ...

Я настроил службу executor. В конце своей лямбды я пытаюсь остановить все потоки, используя executor.shutdown (); Но это ничего не меняет ...

Поскольку S3AsyncClient расширяет AutoCloseable, я определил его в операторе try with resources.

Я точно указал, что это происходит как при холодном, так и при горячем запуске. ,

Нужна помощь, чтобы понять это поведение ...?

Спасибо

...