500 Dahili Sunucu Hatası - Arka Uç Sunucusu

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Videolar

Video Açıklama
500 Dahili Sunucu Hatası - arka uçtan kaynaklanır Arka uç sunucusundan kaynaklanan 500 Internal Server Error ile ilgili gerçek zamanlı bir örnek gösterir ve hatayı giderme adımlarını açıklar.

Belirti

İstemci uygulaması, API çağrılarına yanıt olarak 500 HTTP durum koduyla birlikte Internal Server Error mesajını alır.

500 HTTP durum kodu, genel bir hata yanıtıdır. Bu, sunucunun isteği yerine getirmesini engelleyen beklenmedik bir durumla karşılaştığı anlamına gelir. Bu hata genellikle başka bir hata kodu uygun olmadığında sunucu tarafından döndürülür.

Hata mesajları

İstemci uygulaması aşağıdaki yanıt kodunu alır:

HTTP/1.1 500 Internal Server Error

Ayrıca, aşağıda gösterilene benzer bir hata mesajı da görebilirsiniz:

1. örnek

Örnek Arka Uç Sunucusu Yanıtı #1

{"errorMessage":"Sorry either your e-mail or password didn't match.",
"errorParameters":"{}",
"errorCode":"500",
"errorKey":"INVALID_EMAILPASSWORD"}

2. örnek

Örnek Arka Uç Sunucu Yanıtı #2

<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <Body>
      <Error>
         <code>500</code>
         <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message>
      </Error>
   </Body>
</Envelope>

Olası nedenler

500 Internal Server Error, çeşitli nedenlerle arka uç sunucusu tarafından döndürülmüş olabilir. Bu oyun planında, yaygın adımları kullanarak sorun giderme ve bu hatayı nedeninden bağımsız olarak çözme yöntemleri açıklanmaktadır.

Bu sorunun olası nedenleri şunlardır:

Neden Açıklama Aşağıdaki ürünler için geçerli sorun giderme talimatları
Arka uç sunucusunda hata Arka uç sunucusu bir nedenden dolayı başarısız olabilir. Edge Private ve Public Cloud kullanıcıları

Sık karşılaşılan teşhis adımları

Bu hatayı teşhis etmek için aşağıdaki araçlardan/tekniklerden birini kullanın:

API Monitoring

1. Prosedür: API İzleme'yi kullanma

API İzleme'yi kullanarak hatayı teşhis etmek için:

  1. Apigee Edge kullanıcı arayüzünde oturum açın. Uygun bir role sahip bir kullanıcı olarak oturum açmanız gerekir.
  2. Sorunu incelemek istediğiniz kuruluşa geçin.

  3. Analyze > API Monitoring > Investigate (Analiz > API İzleme > İnceleme) sayfasına gidin.
  4. Hataları gözlemlediğiniz belirli zaman aralığını seçin.
  5. Hata Kodunu Zaman ile karşılaştırın.

  6. Aşağıda gösterildiği gibi, hata kodunu messaging.adaptors.http.flow.ErrorResponseCode içeren bir hücre seçin:

    ( daha büyük resmi görüntüle)

  7. Hata kodu messaging.adaptors.http.flow.ErrorResponseCode ile ilgili bilgiler aşağıda gösterildiği gibi görüntülenir:

    ( daha büyük resmi görüntüle)

  8. Günlükleri görüntüle 'yi tıklayın ve başarısız isteğin satırını genişletin.

    ( daha büyük resmi görüntüle)

  9. Günlükler penceresinde aşağıdaki ayrıntıları not edin:
    • İstek İleti Kimliği
    • Durum Kodu: 500
    • Hata Kaynağı: target
    • Hata Kodu: messaging.adaptors.http.flow.ErrorResponseCode

Trace

2. Prosedür: Trace aracını kullanma

İzleme aracını kullanarak hatayı teşhis etmek için:

  1. İzleme oturumunu etkinleştirin ve şunlardan birini yapın:
    • 500 Internal Server Error hata kodlu messaging.adaptors.http.flow.ErrorResponseCode hatasının oluşmasını bekleyin veya
    • Sorunu yeniden oluşturabiliyorsanız sorunu yeniden oluşturmak için API çağrısı yapın. 500 Internal Server Error
  2. Tüm FlowInfo'ları göster'in etkinleştirildiğinden emin olun:

  3. Başarısız olan isteklerden birini seçip izlemeyi inceleyin.
  4. İzlemenin farklı aşamalarında gezinin ve hatanın nerede oluştuğunu bulun.
  5. Hatayı genellikle aşağıdaki örnekte gösterildiği gibi Hedef sunucudan yanıt alındı aşamasından sonraki bir akışta görürsünüz:

    ( daha büyük resmi görüntüle)

  6. İzleme işleminde AX (Analytics Verileri Kaydedildi) aşamasına gidin ve bu aşamayı tıklayın.
  7. Phase Details Response Headers (Aşama Ayrıntıları Yanıt Başlıkları) bölümüne gidin ve aşağıdaki gibi X-Apigee-fault-code, X-Apigee-fault-source ve X-Apigee-Message-ID değerlerini belirleyin:

    ( daha büyük resmi görüntüle)

  8. X-Apigee-fault-code, X-Apigee-fault-source ve X-Apigee-Message-ID değerlerini not edin:
  9. Yanıt başlıkları Değer
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
    X-Apigee-fault-source target
    X-Apigee-Message-ID MESSAGE_ID

NGINX

3. Prosedür: NGINX erişim günlüklerini kullanma

NGINX erişim günlüklerini kullanarak hatayı teşhis etmek için:

  1. Özel bulut kullanıcısıysanız HTTP 500 Internal Server Error ile ilgili temel bilgileri belirlemek için NGINX erişim günlüklerini kullanabilirsiniz.
  2. NGINX erişim günlüklerini kontrol edin:

    /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

  3. Belirli bir süre boyunca 500 hata koduyla messaging.adaptors.http.flow.ErrorResponseCode hata olup olmadığını (sorun geçmişte yaşandıysa) veya 500 ile hâlâ başarısız olan istekler olup olmadığını arayın.
  4. X-Apigee-fault-code'un messaging.adaptors.http.flow.ErrorResponseCode değeriyle eşleşen 500 hataları bulursanız X-Apigee-fault-source değerini belirleyin.

    NGINX erişim günlüğünden örnek 500 hatası:

    ( daha büyük resmi görüntüle)

    NGINX erişim günlüğündeki yukarıdaki örnek girişte, X-Apigee-fault-code ve X-Apigee-fault-source için aşağıdaki değerler yer almaktadır:

    Üst bilgiler Değer
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
    X-Apigee-fault-source target

Neden: Arka uç sunucusunda hata

Teşhis

Arka uç sunucusu tarafından verilen 500 Internal Server Error yanıtı çeşitli nedenlerden kaynaklanabilir. Her durumu ayrı ayrı teşhis etmeniz gerekir.

  1. Yaygın teşhis adımları bölümünde açıklandığı gibi, API izleme, izleme aracı veya NGINX erişim günlüklerini kullanarak gözlemlenen hatanın Hata Kodu, Hata Kaynağı'nı belirleyin.
  2. Hata Kaynağı target ve Hata Kodu messaging.adaptors.http.flow.ErrorResponseCode ise hatanın arka uç sunucusu tarafından döndürüldüğünü gösterir.
  3. Sorunun nedenini teşhis etmek için aşağıdaki adımlardan birini kullanabilirsiniz:

    Trace

    Trace'i kullanma:

    Başarısızlıkla ilgili bir izleme oturumunuz varsa aşağıdaki adımları uygulayın:

    1. İzleme'de, 500 Internal Server Error ile başarısız olan API isteğini seçin.
    2. Aşağıdaki şekilde gösterildiği gibi, başarısız olan API isteğinden Hedef sunucudan yanıt alındı aşamasını seçin:

      ( daha büyük resmi görüntüle)

    3. Aşama Ayrıntıları bölümüne gidin ve arka uç sunucusundan gelen yanıtı içeren Yanıt İçeriği'ni kontrol edin.

      Örnek Yanıt İçeriği:

      <Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
         <Body>
            <Error>
               <code>500</code>
               <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message>
            </Error>
         </Body>
      </Envelope>

      Yukarıdaki yanıtta, arka uç sunucusundan gelen hata mesajının Not Authorised (Yetkili Değil) olduğunu unutmayın. Bu, kullanıcının geçersiz kimlik bilgileri göndermiş olabileceğini ve bu nedenle bu hatayı aldığını gösterir.

    Arka uç sunucusunu arama

    Arka uç sunucusuna doğrudan arama yapma:

    Arka uç sunucusuna doğrudan arama yapabilir ve:

    • İsteğin Apigee Edge üzerinden yapıldığı zamankiyle aynı 500 Internal Server Error yanıtı alıp almadığınızı doğrulayın.
    • Arka uç sunucusundan alınan hata mesajını (yanıt) kontrol edin.

    Doğrudan arka uç sunucusuna çağrı yapmak için aşağıdaki adımları uygulayın:

    1. Gerekli tüm üst bilgiler, sorgu parametreleri ve isteğin bir parçası olarak arka uç sunucusuna iletilmesi gereken tüm kimlik bilgilerine sahip olduğunuzdan emin olun.
    2. Arka uç hizmeti herkese açık olarak erişilebiliyorsa curl komutunu, Postman'i veya başka bir REST istemcisini kullanabilir ve arka uç sunucusu API'sini doğrudan çağırabilirsiniz.
    3. Arka uç sunucuya yalnızca Mesaj İşleyicilerden erişilebiliyorsa curl komutunu, Postman'i veya başka bir REST istemcisini kullanabilir ve arka uç sunucu API'sini doğrudan Mesaj İşleyiciden çağırabilirsiniz.

    4. Arka uç hizmetinin gerçekten 500 Internal Server Error döndürüp döndürmediğini doğrulayın ve arka uç sunucusu tarafından döndürülen hata mesajını (yanıt) kontrol edin. Ardından, bu hatanın nedenini belirleyin.

    Arka uç sunucu günlükleri

    Arka uç sunucu günlüklerini kullanma

    1. Arka uç sunucu günlüklerini inceleyin ve hatayla ilgili daha fazla ayrıntı ile hatanın nedenini öğrenmeye çalışın.
    2. Hata ve nedeni hakkında daha fazla bilgi edinmek için mümkünse arka uç sunucusunda hata ayıklama modunu etkinleştirin.
  4. Başarısız olan API proxy'sinin belirli hedef uç noktasında proxy zincirleme kullanıp kullanmadığınızı kontrol edin. Diğer bir deyişle, hedef sunucu/hedef uç nokta Apigee Edge'de başka bir proxy'yi çağırıyor mu? Bunu belirlemek için:

    1. Başarısız olan isteğin izlemesi varsa İstek hedef sunucuya gönderildi aşamasına gidin ve Curl'ü göster'i tıklayın.

    2. Hedef Sunucuya Gönderilen İstek İçin Curl penceresi açılır. Bu pencereden hedef sunucu ana makine diğer adını belirleyebilirsiniz.
    3. API proxy'nizin hedef uç noktasını inceleyin ve arka uç sunucusu URL'sinin veya hedef sunucudaki ana bilgisayar adının başka bir proxy'ye ya da kendi arka uç sunucunuza yönlendirip yönlendirmediğini kontrol edin.
    4. Hedef sunucu ana makine takma adı, sanal ana makine takma adına işaret ediyorsa bu, proxy zincirlemedir. Bu durumda, 500 Internal Server Error'ya neyin neden olduğunu belirleyene kadar zincirleme proxy için yukarıdaki tüm adımları tekrarlamanız gerekir. Bu durumlarda 500 Internal Server Error, diğer aşamalarda zincirleme olarak kullanılan diğer proxy'lerde de meydana gelebilir. Bu sorunlar, bu oyun planında veya 500 Dahili Sunucu Hatası oyun planında verilen talimatlar kullanılarak teşhis edilebilir ve çözülebilir.
    5. Hedef sunucu ana makine takma adı, arka uç sunucunuzu işaret ediyorsa Çözüm bölümüne gidin.

Çözünürlük

500 hatasının arka uç sunucusundan kaynaklandığı belirlenirse sorunu uygun şekilde düzeltmek için arka uç sunucusu ekibinizle birlikte çalışın.

Yukarıda bahsedilen örnekte, bu sorunu düzeltmek için kullanıcılardan geçerli kimlik bilgileri göndermelerini isteyebilirsiniz.

Dikkat edilmesi gereken önemli noktalar

  1. Arka uç sunucusu tarafından 500 Internal Server Error için döndürülen gerçek hata mesajı, yalnızca başarısız olan isteklerin izleme oturumunu yakaladıysanız görüntülenebilir.
  2. Arka uç sunucu yanıtı, güvenlik nedeniyle API İzleme, NGINX Erişim Günlükleri veya Mesaj İşleyici günlüklerine kaydedilmez.
  3. 500 Internal Server Error hakkında daha fazla bilgi edinmek ve/veya arka uç sunucusu tarafından döndürülen hata mesajını görüntülemek için arka uç sunucusu günlüklerini inceleyebilir veya arka uçta hata ayıklama modunu etkinleştirebilirsiniz.

Teşhis bilgilerini toplamalıdır

Yukarıdaki talimatları uyguladıktan sonra sorun devam ederse aşağıdaki teşhis bilgilerini toplayın ve Apigee Edge Destek Ekibi ile iletişime geçin.

Herkese açık bulut kullanıcısıysanız aşağıdaki bilgileri sağlayın:

  • Kuruluş adı
  • Ortam adı
  • API proxy'si adı
  • 500 hatasını yeniden oluşturmak için curl komutunu tamamlayın.
  • 500 Internal Server Error ile istekleri içeren izleme dosyası
  • 500 hataları şu anda oluşmuyorsa 500 hatalarının geçmişte oluştuğu zaman aralığını saat dilimi bilgisiyle birlikte belirtin.

Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:

  • Başarısız olan istekler için gözlemlenen hata mesajının tamamı
  • Gözlemlediğiniz kuruluş, ortam adı ve API proxy adı 500 hataları
  • API proxy paketi
  • 500 Internal Server Error ile istekleri içeren izleme dosyası
  • NGINX erişim günlükleri /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    Nerede: ORG, ENV ve PORT# gerçek değerlerle değiştirilir.

  • Mesaj İşleyici sistem günlükleri /opt/apigee/var/log/edge-message-processor/logs/system.log
  • 500 hatalarının oluştuğu saat dilimi bilgisine sahip dönem.