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ıyor Arka uç sunucusunun neden olduğu gerçek zamanlı bir 500 Internal Server Error ile birlikte hatayı giderme ve çözme adımları gösterir.

Belirti

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

500 HTTP durum kodu, genel bir hata yanıtıdır. Bu, sunucunun isteği yerine getirmesini engelleyen beklenmeyen 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ğıdakine benzer bir hata mesajı da görebilirsiniz:

1. Örnek

Örnek Arka Uç Sunucu Yanıtı 1

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

Örnek 2

Örnek Arka Uç Sunucusu 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, arka uç sunucusu tarafından birçok nedenden dolayı döndürülebilir. Bu başucu kitabında, yaygın adımlardan yararlanarak nasıl sorun giderileceği ve bu hatanın nedeninden bağımsız olarak nasıl çözüleceği açıklanmaktadır.

Bu sorunun olası nedenleri şunlardır:

Neden Açıklama Şunun için geçerli sorun giderme talimatları:
Arka uç sunucuda hata Arka uç sunucusu bir nedenden ötürü başarısız olabilir. Edge Özel ve Genel Bulut kullanıcıları

Yaygın 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 Monitoring'i Kullanma

API Monitoring'i kullanarak hatayı teşhis etmek için:

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

  3. Analiz > API İzleme > Araştır sayfasına gidin.
  4. Hataları gözlemlediğiniz belirli zaman aralığını seçin.
  5. Hata Kodu'nu Zamana göre çizin.

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

    ( büyük resmi göster)

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

    ( büyük resmi göster)

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

    ( büyük resmi göster)

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

Trace

2. Prosedür: İzleme aracını kullanma

Hatayı İzle aracını kullanarak teşhis etmek için:

  1. İzleme oturumunu ve aşağıdakilerden birini etkinleştirin:
    • messaging.adaptors.http.flow.ErrorResponseCode hata koduna sahip 500 Internal Server Error 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 seçeneğinin etkin olduğundan emin olun:

  3. Başarısız isteklerden birini seçip izi inceleyin.
  4. İzin farklı aşamaları arasında gezinin ve hatanın nerede gerçekleştiğini bulun.
  5. Hatayı genellikle aşağıda gösterildiği gibi Hedef sunucudan alınan yanıt aşamasından sonraki bir akışta bulabilirsiniz:

    ( büyük resmi göster)

  6. İzdeki AX (Analytics Data Recorded) Aşamalı Sunumu'na gidin ve bunu tıklayın.
  7. Aşama Ayrıntıları Yanıtı Başlıkları bölümüne ilerleyip X-Apigee-fault-code, X-Apigee-fault-source ve X-Apigee-Message-ID değerlerini aşağıda gösterildiği gibi belirleyin:

    ( büyük resmi göster)

  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. Private Cloud kullanıcısıysanız HTTP 500 Internal Server Error ile ilgili önemli 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 messaging.adaptors.http.flow.ErrorResponseCode hata koduna sahip 500 hatası (sorun geçmişte gerçekleştiyse) veya 500 nedeniyle başarısız olmaya devam eden bir istek olup olmadığını görmek için arama yapın.
  4. X-Apigee-fault-code değeriyle eşleşen X-Apigee-fault-code özelliğinde 500 hatası bulursanız X-Apigee-fault-code değerinin değerini belirleyin.

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

    ( büyük resmi göster)

    NGINX erişim günlüğünden yukarıdaki örnek giriş, X-Apigee-fault-code ve X-Apigee-fault-code için aşağıdaki değerlere sahiptir:

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

Neden: Arka uç sunucuda hata

Teşhis

Arka uç sunucusunun yanıt verdiği 500 Internal Server Error birkaç nedenden kaynaklanabilir. Her durumu ayrı ayrı teşhis etmeniz gerekir.

  1. API İzleme, İzleme aracı veya NGINX erişim günlükleri kullanılarak gözlemlenen hata için Yaygın teşhis adımları bölümünde açıklandığı şekilde Hata Kodu, Hata Kaynağı belirleyin.
  2. Hata Kaynağı target ve Hata Kodu messaging.adaptors.http.flow.ErrorResponseCode ise bu durum 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:

    Hata nedeniyle bir İzleme oturumunuz varsa aşağıdaki adımları uygulayın:

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

      ( büyük resmi göster)

    3. Aşama Ayrıntıları bölümüne ilerleyin 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 Yetkilendirilmedi olduğuna dikkat edin. Bu durum, kullanıcının geçersiz kimlik bilgilerini geçmiş olabileceğini ve bu yüzden bu hatayı aldığını gösterir.

    Arka uç sunucusunu ara

    Arka uç sunucuya doğrudan çağrı yapma:

    Arka uç sunucusuna doğrudan bir çağrı yapabilir ve şunları yapabilirsiniz:

    • İstek Apigee Edge üzerinden yapıldığında alınan 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

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

    1. Gerekli tüm üst bilgilere, sorgu parametrelerine ve isteğin bir parçası olarak arka uç sunucusuna iletilmesi gereken kimlik bilgilerine sahip olduğunuzdan emin olun.
    2. Arka uç hizmeti herkesin erişimine açıksa curl komutunu, Postman'ı veya başka bir REST istemcisini kullanabilir ve arka uç sunucu API'sini doğrudan çağırabilirsiniz.
    3. Arka uç sunucuya yalnızca Mesaj İşleyicileri tarafından erişilebiliyorsa curl komutunu, Postman'ı veya başka bir REST istemcisini kullanabilir ve arka uç sunucu API'sini doğrudan Mesaj İşleyici'den çağırabilirsiniz.

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

    Arka uç sunucusu günlükleri

    Arka uç sunucu günlüklerini kullanma

    1. Arka uç sunucu günlüklerini inceleyin, hata ve nedeni hakkında daha fazla bilgi edinmeye çalışın.
    2. Mümkünse hata ve nedeni hakkında daha fazla ayrıntı almak için arka uç sunucusunda hata ayıklama modunu etkinleştirin.
  4. Başarısız API Proxy'sinin belirli hedef uç noktasında (yani, hedef sunucu/hedef uç noktanın Apigee Edge'de başka bir proxy çağırıp çağırmadığı) proxy zincirleme bağlantı kullanıp kullanmadığınızı kontrol edin. Bunu belirlemek için:

    1. Başarısız isteği izlediyseniz İstek hedef sunucuya gönderildi aşamasına gidin ve Show Curl'yi (Curl'yi Göster) tıklayın.

    2. Hedef sunucu ana makine takma adını belirleyebileceğiniz Curl for Request to Target Server (Hedef Sunucuya Gönderilen İstek İçin Curl) penceresi açılır.
    3. API Proxy'nizin hedef uç noktasını inceleyin ve arka uç sunucu URL'sinin veya hedef sunucudaki ana makine adının başka bir Proxy'ye veya kendi arka uç sunucunuza işaret edip etmediğini kontrol edin.
    4. Hedef sunucu ana makine takma adı bir sanal ana makine takma adına işaret ediyorsa bu, proxy zincirlemedir. Bu durumda, 500 Internal Server Error hatasına neyin neden olduğunu belirleyene kadar zincirleme proxy için yukarıdaki adımların tümünü tekrarlamanız gerekir. Bu durumlarda 500 Internal Server Error, diğer aşamalardaki diğer zincirleme proxy'lerde de ortaya çıkabilir. Bu başucu kitabında veya 500 Dahili Sunucu Hatası başucu kitabında verilen talimatlar uygulanarak teşhis edilebilir ve çözülebilir.
    5. Hedef sunucu ana makine takma adı arka uç sunucunuzu işaret ediyorsa Çözüm'e gidin.

Çözünürlük

500 hatasının arka uç sunucudan geldiği doğrulanırsa arka uç sunucu ekibinizle birlikte çalışarak sorunu uygun şekilde düzeltin.

Yukarıda açıklanan örnekte, bu sorunu düzeltmek için kullanıcılardan geçerli kimlik bilgilerini iletmelerini istemeniz gerekebilir.

Dikkat edilmesi gereken önemli noktalar

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

Teşhis bilgileri toplanmalıdır

Yukarıdaki talimatları uyguladıktan sonra da 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 adı
  • 500 hatasını yeniden oluşturmak için curl komutunu tamamlayın
  • 500 Internal Server Error içeren istekleri içeren izleme dosyası
  • Şu anda 500 hataları ortaya çıkmıyorsa geçmişte 500 hatalarının meydana geldiği zaman dilimi bilgisini içeren dönemi belirtin.

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

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

    Yer: 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 bilgilerinin yer aldığı dönem.