Я работаю над 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.
Я точно указал, что это происходит как при холодном, так и при горячем запуске. ,
Нужна помощь, чтобы понять это поведение ...?
Спасибо