AWS ELB Apache2 503 Hizmet Kullanılamıyor: Arka uç sunucu kapasitede


39

Amazonons AWS altyapısı üzerinden yaklaşık iki yıldır birkaç web sitesi kullanıyoruz ve yaklaşık iki gün önce web sunucusu, bulabildiğim tek hatayla günde bir veya iki kez düşmeye başladı:

HTTP/1.1 503 Service Unavailable: Back-end server is at capacity

CloudWatch tarafından hiçbir alarm (CPU / Disk IO / DB Bağlantısı) tetiklenmez. ELB'yi atlamak için siteye elastik IP üzerinden gitmeye çalıştım ve şunu anladım:

HTTP request sent, awaiting response... Read error (Connection reset by peer) in headers. Retrying.

Apache günlüklerinde olağandışı bir şey görmüyorum ve doğru şekilde döndürüldüklerini doğruladım. Makineye SSH ile "aşağı" düştüğünde ve işlem listesine baktığımda hiçbir sorunum yok bana normal görünen 151 apache2 işlemlerini görüyorum. Apache'nin yeniden başlatılması sorunu geçici olarak düzeltir. Bu makine sadece bir ELB'nin arkasındaki web sunucusu olarak çalışıyor. Herhangi bir öneri çok takdir edilecektir.

İşlemci Kullanımı Ortalama:% 7.45, Minimum:% 0.00, Maksimum:% 25.82

Bellek Kullanımı Ortalama:% 11.04, Minimum:% 8.76, Maksimum:% 13.84

Swap Kullanımı Ortalama: N / A, Minimum: N / A, Maksimum: N / A

/ Dev / xvda1 için monte edilen / ortalama / ortalama:% 62,18, Minimum:% 53,39, Maksimum:% 65,49

Açıklığa kavuşturayım Meselenin tek tek EC2 örneği ile olduğunu düşünüyorum ve ELB ile değil, elastik IP'ye ulaşamama rağmen, bunu ekarte etmek istemedim. ELB'nin sadece gerçek EC2 örneğine vurarak sonuçlarını iade edeceğinden şüpheleniyorum.

Güncelleme: 2014-08-26 Bunu daha önce güncellemeliydim ama "düzeltme", "kötü" vakanın anlık görüntüsünü almak ve elde edilen AMI'yi başlatmaktı. O zamandan beri aşağı gitmedi. Halen sorun yaşarken sağlık kontrolüne curl http://localhost/page.htmlbaktım ve yük dengeleyicisinden kapasite sorunları alırken bile sağlık kontrol sayfasına ( ) ulaşabildim. Bunun bir sağlık kontrolü sorunu olduğuna ikna olmadım, ancak Amazon dahil hiç kimse daha iyi bir cevap veremediğinden, cevap olarak işaretliyorum. Teşekkür ederim.

Güncelleme: 2015-05-06 Buraya geri döneceğimi ve sorunun kesinlikle sağlık kontrolü ayarları olduğuna inanıyorum derim. AMI ile ilgili bir sorun olmalarını reddetmek istemiyorum çünkü AMI'nin değiştirilmesinden sonra kesinlikle daha iyi bir hal aldı, ancak sağlık kontrollerimizin her yük dengeleyici için farklı olduğunu ve en fazla sorun yaşadığını kontrol ettim. Gerçekten agresif bir sağlıksız eşik ve müdahale zaman aşımına uğradı. Trafiğimiz tahmin edilemez bir şekilde yükselme eğilimindedir ve agresif sağlık kontrolü ayarları ile trafikteki ani artışlar arasında mükemmel bir fırtına olduğunu düşünüyorum.


Ben hakkında daha fazla bilgi bulundu: meta.discourse.org/t/...
Andre Mesquita'nın

Yanıtlar:


41

ELB yük dengeleyici sağlık kontrollerini yaptığında ve yanlış bir konfigürasyondan (tipik olarak NameVirtual host ile) dolayı bir "sayfa bulunamadı" (veya başka basit bir hata) aldığında bir "arka uç sunucusu kapasitede" olur.

"ELB-HealthChecker" kullanıcı aracısını kullanarak günlük dosyaları klasörünü grepping deneyin. Örneğin

grep ELB-HealthChecker  /var/log/httpd/*

Bu genellikle size kolayca sabitlenebilen 4x veya 5x hata verir. örneğin, Sel, MaxClients vb. sorunlara çok fazla kredi kazandırıyor.

FYI Amazon: Neden istek yanıtını döndürmüyorsun? Bir durum kodu bile yardımcı olabilir.


17

Ben sadece bu konuyu kendim koştum. Amazon ELB, sağlıklı örnekler yoksa bu hatayı verir. Sitelerimiz yanlış yapılandırıldı, bu yüzden ELB sağlık kontrolü başarısız oldu, bu da ELB'nin iki sunucuyu devirmesini engelledi. Sıfır sağlıklı sitelerde, ELB 503 Hizmet Kullanılamıyor'u verdi: Arka uç sunucu kapasitede.


5

[Soruyu daha iyi anladıktan sonra EDIT] ELB hakkında herhangi bir tecrübeye sahip olmadığımı düşünüyorum, bunun Apache'nin bir Tomcat'i önlediği ve bağlantıyı suya sokması durumunda atılabilecek 503 hatası gibi göründüğünü hala şüpheli kıldığını düşünüyorum.

Bunun etkisi, eğer Apache arka uç tarafından işlenenden daha fazla bağlantı isteği iletirse, arka uç giriş kuyruklarının daha fazla bağlantı kabul edilinceye kadar dolmasıdır. Bu olduğunda, Apache'nin ilgili çıktı kuyrukları dolmaya başlar. Kuyruklar dolduğunda Apache 503'ü fırlatır. Apache'nin arka uç olduğu zaman aynı şey olabilirdi ve ön uç kuyrukları dolduracak bir hızda sunar.

(Varsayımsal) çözüm, arka uçtaki giriş konektörlerini ve ön uçtaki çıkış konektörlerini boyutlandırmaktır. Bu, beklenen taşma seviyesi ile ilgili bilgisayarların mevcut RAM'i arasında bir dengeleme hareketine dönüşüyor.

Bu olduğu gibi, maksimum müşteri ayarlarınızı kontrol edin ve meşgul çalışanlarınızı Apache'de (mod_status.) İzleyin. Mümkünse, ELB'nin Tomcats konnektörü backlog, maxthreads vb. İle aynı olanları yapın.

Bunun doğrudan uygulanabilir olmadığını tam olarak anladığım halde, bu bağlantıda Apache konektörü için bir boyutlandırma kılavuzu var. Karşılık gelen ELB kuyruğu tekniklerini araştırmanız, sonra da matematiği yapmanız gerekir: http://www.cubrid.org/blog/dev-platform/maxclients-in-apache-and-its-effect-on-tomcat-during- tam gc /

Aşağıdaki yorumda görüldüğü gibi, Apache konektörünü ezmek için trafikteki bir yükseliş tek olasılık değildir. Bazı isteklerin diğerlerinden daha yavaş sunulması durumunda, bu oranların daha yüksek olması konektör sıralarının dolmasına neden olabilir. Bu benim durumumda doğruydu.

Ayrıca, bu başıma geldiğinde, 503: s tekrar servis alamamak için Apache hizmetini yeniden başlatmam gerektiğine şaşırmıştım. Sadece konektör taşmasını beklemek yeterli değildi. Bunu hiç çözmedim, ancak Apache'de belki de önbelleğinden hizmet eden biri olabilir mi?

İşçi sayısını ve ilgili çatal-maksi maksimum ayarları ayarını arttırdıktan sonra (bu, doğru hatırlıyorsam kuyruklar için birkaç başka yönergeye sahip olan Windows'taki okuyuculu Apache idi), 503 problemi ortadan kalktı. Ben aslında matematiği yapmadım, ancak sıradaki kaynakların en yüksek tüketimine ulaşan geniş bir marj gözlemleyene kadar değerleri biraz değiştirdim. Buna gitmesine izin verdim.

Umarım bu biraz yardımcı olmuştur.


Apache'nin senin arka uç olduğunu yazdığını fark ettim. Yine de işçiler, çalışanlar vb. Oynayacaklarını düşünüyorum, ancak cevabım çok kapalı ve tekrar yazmak gerekiyor. Bunun yerine sadece silebilirim. Alınan ders: soruyu doğru oku.
ErikE

Teşekkür ederim. Bunun olması için trafikte büyük bir artış olması gerekecek mi? Ve bir keresinde trafik bıraktığında, apache kurtarılamaz mı dedi?
JSP

Teoride evet. Ancak, bu başıma geldiğinde hizmeti yeniden başlatmak zorunda kaldım. Bu beni ilk önce gerçekte olanlar ile ilgisi olmayan yerlere bakmaya yöneltti, fakat doğru teşhis ve tedavi sonrasında bile hala hizmetin yeniden başlatılmasının gerekliliğini anlayamadım. Sessizce bunun Apache'yi Windows'ta çalıştırmasından kaynaklandığından şüphelendim çünkü görünüşe göre sadece bu kombinasyonla karşılaşan ilgisiz bir hata referansı buldum. Her durumda çok garip.
ErikE

Ve evet, konektörleri ezici trafik vardı - keskin değil (bizim için) ama çok fazla. Oldukça belli olan bazı talepler, hizmet için daha yavaştı ki bu, ara sıra çok fazla gelmeye başladı. Bir miktar izlenen ve sadece ilgili değerleri yükselttikten sonra, 503'ler sonraki yeniden başlatmalar için gereklilik ile birlikte kayboldu.
ErikE

4

Elbette ki sağlık denetleyicisinin değerlerini artırabilir, böylece tek bir yavaş yanıt bir sunucuyu direkten çekemez. birkaç kullanıcının hizmet almaması, sitenin herkes için kullanmasından daha iyidir.

EDIT: Sağlık kontrolü zaman aşımını 25 saniyeye yükselterek ön ısıtma yapmadan önbellek olmadan kurtulabiliyoruz ...... 1-2 dakika sonra ... site cehennem gibi duyarlı

EDIT :: sadece bir miktar talep üzerine başlat ve izleme araçlarının yönetimi ne kadar hızlı yaptığını gösterdiği zaman RI amazon: P

EDIT: Bu mümkündür, tek bir arka uç elb kayıtlı örneği yeterli değildir. sadece bir kaç tane daha fırlatıp onları dirse alın ve bu da sorununuzu daraltmanıza yardımcı olacak


0

Birkaç yıl gecikti, ama umarım bu birine yardım eder.

ELB'nin arkasındaki örnek atanmış uygun bir kamu IP'sine sahip olmadığında bu hatayı görüyordum. El ile bir Elastik IP oluşturmak ve onu zamanla ELB ile ilişkilendirmek zorunda kaldım ve ELB neredeyse anında onu aldı.

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.