http istekleri için kubernetes / elb zaman aşımı nedir?


9

Bir java API (HTTPS istekleri_ kabul bir docker görüntü içine paketlenmiş ve daha sonra EC2s üstünde k8s küme kullanılarak dağıtılır.Ana EC2 önünde bir ELB vardır.

Java API vurmak için ELB kıvırmak POST isteklerini yapabilirsiniz.

Kube günlüklerini gördüğümde işlemin başarılı olmasına rağmen bazen kıvrılma isteğim sonsuza kadar bir yanıt bekliyor.

Bu, 40 dakika civarında daha büyük istekler için olur, 25 dakika talepleri bir yanıt alır.

Zaman aşımının nerede olabileceğini düşünüyorsunuz? herhangi bir özel yapılandırma params bakmak gerekir?

istemci (kıvırmak) -> ELB -> k8s -> java api görüntüsünü çalıştıran bölme

Ben ELB için bu alakalı olacağını düşündüm (IdleTimeout ayarı değilim) ama 20min istekleri "ConnectionSettings" için yanıt alabilirsiniz rağmen docs varsayılan 60s olduğunu söylüyor: {"IdleTimeout"}


"40 dakika civarında daha büyük istekler" ne demek istiyorsun?
Arghya Sadhu

yani büyük dosyayı yüklerken, api ETL işlemi ile 'yutmak' için 40 dakika alır ve daha sonra geri yanıt göndermek anlamına geliyordu
tooptoop4

Merak ediyorum neden master önünde bir LB (api-server demek?) Ve bu LB isabet API nasıl ulaşabilirsiniz.
suren

Yanıtlar:


1

Pampy'nin cevabında belirttiği gibi , ELB zaman aşımı sadece Boşta kalma süresini sayar. Bu 1 ile 4000 saniye arasında değişebilir ve varsayılan olarak 60 saniyeye ayarlıdır. Zaman aşımını CLI veya konsolu kullanarak değiştirebilirsiniz.

Aşağıda, CLI'yi 5 dakikaya değiştirmek için kullanma örneği verilmiştir:

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

Kaynak: dokümanlar

20-40 dakika süren büyük dosyaları yüklerken, yükleme ve işlemeyi eşzamansız olarak işlemek için RabbitM veya Kafka gibi bir mesaj komisyoncusu kullanma hakkındaki diğer önerileri yine de öneririm.


0

ELB zaman aşımı yalnızca "boşta" süresi için sayılır . Bu, yüklemeniz devam ettiği sürece boşta olmadığı anlamına gelir. Dosya sunucunuza ulaştığında, sunucunuzun yanıt vereceği zamanı ölçmeniz gerekir.

Bunu doğru bir şekilde aldığınızda, sunucu isteği işler ve daha sonra istemciye bir yanıt döndürür. Varsayılan 60 saniyelik zaman aşımı süresiyle, sunucunuz yüklenen dosyayı işlemek ve bir yanıt döndürmek için bu 60 saniyeye sahiptir.

Belki sunucunuzun 25 dakikalık yüklemenizi işlemek için 60 saniyeden az, 40 dakikalık yüklemeyi işlemek için daha fazlasına ihtiyacı vardır?


60 saniye nereden geliyor? ELB üzerinde varsayılan IdleTimeout kullanmıyorum
tooptoop4

ELB'nin varsayılan boşta kalma zaman aşımı süresi 60 saniyedir. "Kullanamazsınız". Bunu 1 saniye ile 60 dakika arasında değiştirebilirsiniz, ancak ELB'ye bağlantıyı sonlandırmamasını söylemenin bir yolu yoktur.
Pampy

0

Neden dosyayı yüklemiyor ve rabbitMQ gibi mesaj brokerine bir olayı itmiyorsunuz. Kubernetes Job / CronJob nesnesini eşzamansız olarak kullanarak dosyalarda ETL gerçekleştirin ve istemciyi bilgilendirin.

Bu şekilde, gelen isteği daha uzun süre engellemenize gerek kalmaz. olay yayınlandıktan sonra yükleme sonrası, istemciye isteğin işlendiğini bildiren bir ileti gönderin.


hala zaman aşımı nerede olduğunu bulmak istiyorum
tooptoop4

0

HTTP isteği için 25 dakika oldukça uzun. P Ekambaram'a oldukça katılıyorum.

Dosyayı yükler yüklenmez (daha hızlı olmalı), bitiş noktasını eşzamansız hale getirmenin ve yanıtlamanın daha iyi olabileceğini düşünüyorum, aynı zamanda, bir kez dosya başarıyla içe aktarıldı ve işlendi.


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

zaman aşımını 5 dakika olarak değiştirmek için cLI'da bunu kullanın

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.