Aracılığıyla paylaş


Service Fabric kullanarak yaygın kod paketi hatalarını tanılama

Bu makalede, bir kod paketinin beklenmedik bir şekilde sonlandırılmasının ne anlama geldiğini açıklanmaktadır. Sorun giderme adımlarının yanı sıra yaygın hata kodlarının olası nedenleri hakkında içgörü sağlar.

Bir işlem veya kapsayıcı beklenmedik bir şekilde ne zaman sonlandırır?

Azure Service Fabric bir kod paketi başlatma isteği aldığında, Uygulama ve Hizmet bildirimlerinde ayarlanan seçeneklere göre ortamı yerel sistemde hazırlamaya başlar. Bu hazırlıklar ağ uç noktalarını veya kaynaklarını ayırmayı, güvenlik duvarı kurallarını yapılandırmayı veya kaynak idare kısıtlamalarını ayarlamayı içerebilir.

Ortam düzgün yapılandırıldıktan sonra Service Fabric kod paketini getirmeye çalışır. İşletim sistemi veya kapsayıcı çalışma zamanı işlemin veya kapsayıcının başarıyla etkinleştirildiğini bildirirse bu adım başarılı kabul edilir. Etkinleştirme başarısız olursa, SFX'te aşağıdakine benzer bir sistem durumu iletisi görmeniz gerekir:

There was an error during CodePackage activation. Service host failed to activate. Error: 0xXXXXXXXX

Kod paketi başarıyla etkinleştirildikten sonra Service Fabric ömrünü izlemeye başlar. Bu noktada, bir işlem veya kapsayıcı çeşitli nedenlerle herhangi bir zamanda sonlandırılabilir. Örneğin, dll başlatılamadı veya işletim sistemi masaüstü yığın alanı tükenmiş olabilir. Kod paketiniz sonlandırıldıysa SFX'te aşağıdaki sistem durumu iletisini görmeniz gerekir:

The process/container terminated with exit code: XXXXXXXX. Please look at your application logs/dump or debug your code package for more details. For information about common termination errors, please visit https://aka.ms/service-fabric-termination-errors

Bu sistem durumu iletisindeki çıkış kodu, işlemin veya kapsayıcının neden sonlandırıldığı hakkında sağladığı tek ipucudur. Yığının herhangi bir düzeyi tarafından oluşturulabilir. Örneğin, bu çıkış kodu bir işletim sistemi hatası veya .NET sorunuyla ilgili olabilir ya da kodunuz tarafından tetiklenmiş olabilir. Sonlandırma çıkış kodlarının ve olası çözümlerin kaynağını tanılamak için bu makaleyi başlangıç noktası olarak kullanın. Ancak bunların yaygın senaryolara yönelik genel çözümler olduğunu ve gördüğünüz hata için geçerli olmayabilir.

Service Fabric'in kod paketimi sonlandırarak sonlandırmadığını nasıl anlayabilirim?

Çeşitli nedenlerle kod paketinizi sonlandırmak Service Fabric'in sorumluluğunda olabilir. Örneğin, yük dengeleme amacıyla kod paketini başka bir düğüme yerleştirmeye karar verebilir. Aşağıdaki tabloda çıkış kodlarından birini görüyorsanız Service Fabric'in kod paketinizi sonlandırdığını doğrulayabilirsiniz.

Not

İşleminiz veya kapsayıcınız aşağıdaki tabloda yer alan kodlar dışında bir çıkış koduyla sonlandırılırsa, Service Fabric bunu sonlandırmaktan sorumlu değildir.

Çıkış kodu Açıklama
7147 Service Fabric'in bir Ctrl+C sinyali göndererek işlemi veya kapsayıcıyı düzgün bir şekilde kapattığını gösterir.
7148 Service Fabric'in işlemi veya kapsayıcıyı sonlandırdığını gösterir. Bazen bu hata kodu, işlemin veya kapsayıcının Ctrl+C sinyali gönderdikten sonra zamanında yanıt vermediğini ve sonlandırılması gerektiğini gösterir.

Diğer yaygın hata kodları ve olası düzeltmeleri

Çıkış kodu Onaltılık değer Kısa açıklama Kök neden Olası düzeltme
3221225794 0xc0000142 STATUS_DLL_INIT_FAILED Bu hata bazen makinede masaüstü yığın alanının yetersiz olduğu anlamına gelir. Bu neden özellikle düğümde çalışan uygulamanıza ait çok sayıda işleminiz varsa olasıdır. Programınız Ctrl+C sinyallerine yanıt verecek şekilde oluşturulmadıysa Küme bildiriminde EnableActivateNoWindow ayarını etkinleştirebilirsiniz. Bu ayarın etkinleştirilmesi, kod paketinizin GUI penceresi olmadan çalıştırılacağı ve Ctrl+C sinyalleri almayacağı anlamına gelir. Bu eylem, her işlemin tükettiği masaüstü yığın alanı miktarını da azaltır. Kod paketinizin Ctrl+C sinyallerini alması gerekiyorsa düğümünüzün masaüstü yığınının boyutunu artırabilirsiniz.
3762504530 0xe0434352 Yok Bu değer, yönetilen koddan (.NET) işlenmeyen bir özel durumun hata kodunu temsil eder. Bu çıkış kodu, uygulamanızın işlenmemiş olarak kalan ve işlemi sonlandıran bir özel durum oluşturduğunu gösterir. Bu hatayı neyin tetiklediği belirlenirken ilk adım olarak, uygulamanızın günlüklerinde ve döküm dosyalarında hata ayıklama yapın.

Sonraki adımlar

  • Diğer yaygın senaryoları tanılama hakkında daha fazla bilgi edinin.
  • Azure İzleyici'ye genel bakış makalesini okuyarak Azure İzleyici günlüklerine ve bunların sunduklarına daha ayrıntılı bir genel bakış elde edin.
  • Algılama ve tanılama konusunda yardım için Azure İzleyici günlükleri uyarısı hakkında daha fazla bilgi edinin.
  • Azure İzleyici günlüklerinin bir parçası olarak sunulan günlük araması ve sorgulama özellikleri hakkında bilgi edinin.