які часові очікування кубернетів / локтей для запитів http?


9

У мене є Java-API (приймає запити HTTPS_, упаковані в зображення докера, а потім він розгортається за допомогою кластеру k8s поверх EC2. Майстер EC2 має ELB попереду.

Я можу зробити запити POST до ELB, щоб потрапити на цей Java API.

Іноді мій запит на згортання сидить у очікуванні відповіді назавжди, навіть коли я бачу журнали кубе, обробка пройшла успішно.

Це трапляється для великих запитів близько 40 хвилин, запити в 25 хвилин отримують відповідь добре.

Де ви думаєте, де може бути час очікування? якісь конкретні параметри конфігурації, на які я повинен дивитись?

client (curl) -> ELB -> k8s -> pod запускає зображення Java api

Я думав, що це буде доречно (я не встановлюю IdleTimeout) для ELB, але документи кажуть, що за замовчуванням 60-х, хоча я можу отримати відповідь на 20-хвилинні запити "ConnectionSettings": {"IdleTimeout"}


"більші запити близько 40 хвилин", що ви маєте на увазі під цим?
Аргія Садху

тобто завантаження великого файлу, api займає 40 хвилин, щоб 'заковтувати' його за допомогою ETL-процесу, тоді він мав на меті відправити відповідь назад
tooptoop4

Мені цікаво, чому у вас LB перед майстром (ви маєте на увазі api-сервер?), І як ви можете дістатися до свого API, потрапивши в цей LB.
suren

Відповіді:


1

Так само, як Пампі згадував у своїй відповіді, час очікування ELB вважає лише час простою. Це може становити від 1 до 4000 секунд, а за замовчуванням встановлено 60 секунд. Ви можете змінити час очікування за допомогою CLI або консолі.

Нижче наводиться приклад використання CLI для зміни його на 5 хвилин:

aws elb modify-load-balancer-attributes --load-balancer-name my-loadbalancer --load-balancer-attributes "{\"ConnectionSettings\":{\"IdleTimeout\":300}}"

Джерело: док

Оскільки ви завантажуєте великі файли за 20-40 хвилин, я все-таки рекомендую інші пропозиції щодо використання брокера повідомлень на зразок RabbitM або Kafka для асинхронного керування завантаженням та обробкою.


0

Час очікування ELB рахується лише для "простою" . Це означає, що поки ваше завантаження все ще працює, воно не працює. Коли файл прибув на ваш сервер, вам потрібно виміряти час, поки ваш сервер відповість.

Коли це правильно встановлено, сервер обробить запит і поверне відповідь клієнтові. За замовчуванням 60 секунд, ваш сервер має ці 60 секунд для обробки завантаженого файлу та повернення відповіді.

Можливо, вашому серверу потрібно менше 60 секунд, щоб обробити завантаження 25 хвилин, але більше, щоб обробити завантаження за 40 хвилин?


звідки береться 60секунд? я не використовую IdleTimeout за замовчуванням на ELB
tooptoop4

60 секунд - це час очікування очікуваного часу очікування ELB. Ви не можете "не використовувати" його. Ви можете змінити його на відстань від 1 секунди до 60 хвилин, але немає можливості сказати ELB взагалі не припиняти з'єднання.
Пампі

0

Чому ви не завантажуєте файл і не натискаєте на подію брокеру повідомлень, як rabbitMQ. Виконайте ETL у файлах, використовуючи об'єкт kubernetes Job / CronJob асинхронно і відповідно повідомте клієнта.

Таким чином, вам не доведеться блокувати вхідний запит на довший час. після публікації події після публікації події надішліть клієнту повідомлення про те, що запит обробляється.


я все ще хочу знайти, де час очікування
tooptoop4

0

25 хвилин - це досить довгий запит HTTP. Я цілком згоден з П Екамбарамом.

Я думаю, що краще зробити кінцеву точку асинхронною і відповісти, як тільки файл завантажується (повинен бути швидшим), в той же час використовувати повідомлення з середнім програмним забезпеченням (RabbitMQ, Kafka або NATS) або Websocket, які підштовхують подію файл успішно імпортується та обробляється.


0
 aws elb modify-load-balancer-attributes --load-balancer-name my-loadbalancer --load-balancer-attributes "{\"ConnectionSettings\":{\"IdleTimeout\":300}}"

використовуйте це в cLI, щоб змінити час очікування на 5 хв

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.