2015-04-16 19 views
15

Bir kümede çalışırken, yanlış bir şey olursa, çalışan genellikle ölür (JVM kapatma). Çarpmaya neden olan şeyleri bulmak için çoğu zaman, bir zorluk (fırtına ile en büyük zorluk), birçok faktör neden olabilir. Tabii ki, fırtına amiri ölü işçileri yeniden başlatır ve bir fırtına kümesinde yaşanabilirlik oldukça iyidir, yine de bir işçi kazası, ek yükü ekledikçe kaçınmamız gereken bir karmaşadır (işçinin bulunana kadar çok uzun sürebilir.). Bunu önlemek için topolojinizi tasarlamadıysanız, ölü ve respawn) ve veri kaybı.Çalışan işçi apache fırtınasında çöküyor

Fırtına işçisinin ne zaman ve neden çöktüğünü kontrol etmek için kolay bir yol/araç/metodoloji var mı? Onlar fırtına-ui'de gösterilmiyor (denetçiler gösteriliyorsa) ve her şey çok dikkatli bir şekilde manuel izleme (örneğin jstack + JVM'yi tercih ediyor) ile ilgileniyor. İşte

olabilir bazı durumlar vardır:

  • zaman aşımları ve birçok olası nedenler: yavaş java çöp toplama, kötü ağ, zaman aşımı yapılandırmasında kötü boyutlandırma. Yerel olarak denetleyici kayıtlarından aldığımız tek çıktı "durum: zaman aşımı" veya "durum: izin verilmeyen" durumudur. Ayrıca bir işçi öldüğünde fırtına-ui üzerindeki istatistikler yeniden başlatılır. Zaman aşımlarından korktuğunuzda, gerçek zamanlı işlem için iyi bir çözüm gibi görünmeyen uzun olanları kullanarak sonuçlanırsınız.
  • Beklenmedik davranışlarla yüksek sırt baskısı, çalışan kalp atışlarını aç bırakma ve örneğin zaman aşımı sağlama. Acking, geri basınçla başa çıkmak için tek yol gibi görünüyor ve yükünüze göre cıvataların iyi işlenmesine ihtiyaç duyuyor. İşe son vermek, işçileri gerçekten çarpıştıracak ve sonuçta kötü sonuçlar alacağından (baskı altında olan topolojik bir topolojiden bile daha az veri işlendiğinden) bir hareketsizlik gibi görünmüyor.
  • kod uygulama zamanı istisnaları, bazen uygulama günlüklerinin (en kolay durum) elle denetlenmesine gerek duyan fırtınada gösterilmez. JVM dumps ile bulunabilen bellek sızıntıları
  • .
+0

Zaman aşımları ve arka basınç, JVM çöküyor gibi gelmiyor, uygulama davranışı. Ağınızdaki tüm VM'ler için genel izlemeye mi ihtiyacınız var, yoksa belirli bir konuyu derinlemesine teşhis etmeye mi çalışıyorsunuz? – the8472

+0

@ the8472 evet haklısınız, bu fırtına ile ilgili. Bir işçi, fırtına tarafından yönetilen kendi JVM örneğine sahip bir java sürecidir. Kötü şeyler, her zaman sessizce başarısız olur (işçi kayıtlarında neredeyse hiçbir şey). Çok fazla oturum açmayan "fırtına gözetmeni" adlı başka bir java süreci tarafından ortaya çıkar ve/veya öldürülür. Bu soruyu sordum, bu yüzden burada çalışan kazalarını izlemek ve hata ayıklama görevlerini kolaylaştırmak için uygun bir yöntem tanımlayabiliriz. – zenbeni

+1

İlk adımın, işçilerin amir tarafından kapatılıp kapatılmadığını veya süreç içindeki hata koşullarından dolayı kirli bir şekilde çıkıp çıkmadığını anlamak istiyorum. Farklı potansiyel nedenler muhtemelen farklı şekilde saldırıya uğramak zorundadır. – the8472

cevap

1

Fırtına amiri, zaman aşımı ile yeniden başlatmayı günlüğe kaydeder. denetleyici günlüğünü izleyebilirsiniz, ayrıca cıvata yürütme (tuple) yönteminizin performansını izleyebilirsiniz.

Fırtına amiri işçiyi -9 işçiyi öldürdüğü için yığın dökümü bozuk olabilir, bu yüzden yığınınızı dinamik olarak izleyen araçları veya jmap aracılığıyla yığın dökümlerini üretmek için denetleyiciyi öldüren araçları kullanırdım. Ayrıca, gc günlüklerini izlemeyi deneyin.

Hala varsayılan zaman aşımlarını artırmanızı öneriyorum.

İlgili konular