500 Dahili Sunucu Hatası

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Videolar

500 Dahili Sunucu Hatalarını giderme hakkında daha fazla bilgi edinmek için aşağıdaki videoları izleyin.

Video Açıklama
Giriş 500 Dahili Sunucu Hatası ve olası nedenleri hakkında bir giriş sunar. Ayrıca şunlar da gösterir: gerçek zamanlı 500 Dahili Sunucu hatası ile birlikte hatayı giderme ve çözme adımları.
Hizmet Açıklama Metni hatalarını işleme ve Değişkeni Ayıklama Hizmet Çağrısı ve Değişken Ayıklama politikalarının neden olduğu iki adet 500 Dahili Sunucu Hatasını gösterir ve bu hataların nasıl giderilip çözümleneceğini gösterir.
JavaScript politikası hatalarını giderme JavaScript politikası ve adımların neden olduğu 500 Dahili Sunucu Hatası'nı gösterir inceleyin.
Arka uç sunucularından gelen hataları işleme Arka uç sunucusunda bir hatanın neden olduğu 500 Dahili Sunucu Hatası örneğini ve adımları gösteriyor adımları uygulayın.

Belirti

İstemci uygulaması şu mesajla birlikte 500 HTTP durum kodunu alır: API çağrılarına yanıt olarak "Dahili Sunucu Hatası". 500 Dahili Sunucusu hata, Edge'de herhangi bir politikanın yürütülmesi sırasında oluşan bir hatadan veya bir hatadan kaynaklanabilir yeni bir veri kaynağı gözden geçirin.

HTTP durum kodu 500 genel bir hata yanıtıdır. Bu, sunucunun bir beklenmedik bir durum var. Bu da isteği yerine getirmesini engelliyor. Bu hata genellikle sunucu tarafından döndürülür.

Hata mesajları

Aşağıdaki hata mesajını alabilirsiniz:

HTTP/1.1 500 Internal Server Error

Bazı durumlarda, daha fazla ayrıntı içeren başka bir hata mesajı görebilirsiniz. Bir örnek verelim hata mesajı:

{
   "fault":{
      "detail":{
         "errorcode":"steps.servicecallout.ExecutionFailed"
      },
      "faultstring":"Execution of ServiceCallout callWCSAuthServiceCallout failed. Reason: ResponseCode 400 is treated as error"
   }
}

Olası Nedenler

500 Dahili Sunucu Hatası, birçok farklı nedenden dolayı oluşabilir. Edge'de Nedenler, hatanın gerçekleştiği yere bağlı olarak iki ana kategoriye ayrılabilir:

Neden Ayrıntılar Ayrıntılı Sorun Giderme Adımları Sağlanmış
Edge Politikasında Yürütme Hatası Politika içinde bulunması bazı nedenlerden dolayı başarısız olabilir. Edge Özel ve Herkese Açık Bulut kullanıcıları
Arka Uç Sunucuda Hata Arka uç sunucusu bir nedenden dolayı başarısız olabilir. Edge Özel ve Herkese Açık Bulut kullanıcıları

Edge Politikasında Yürütme Hatası

Bir Politika API proxy'si bir nedenden dolayı başarısız olabilir. Bu bölümde, aşağıdaki durumlarda sorunun nasıl giderileceği açıklanmaktadır: 500 Dahili Sunucu Hatası, bir politika yürütülürken ortaya çıkar.

Teşhis

Gizli ve Herkese Açık Bulut Kullanıcıları İçin Teşhis Adımları

Hatayla ilgili izleme kullanıcı arayüzü oturumunuz varsa:

  1. Hatanın bir politikanın yürütülmesinden kaynaklandığını doğrulayın. Ayrıntılı bilgi için Sorunun kaynağını belirleme bölümüne bakın.
  2. Politika yürütülürken hata oluştuysa devam edin. Hata Arka uç sunucusunda hata başlıklı makaleyi inceleyin.
  3. İzlemede 500 Dahili Sunucu Hatası ile başarısız olan API isteğini seçin.
  4. İsteği inceleyin ve başarısız olan politikayı veya "Hata" izlemedeki başarısız politikayı hemen takip eden bir e-posta alırsınız.
  5. "Hatayı" kontrol ederek hata hakkında daha fazla bilgi edinin alan adının bölümünü veya Hata içeriği.
  6. Hata hakkında topladığınız ayrıntıları kullanarak nedenini belirlemeye çalışın.

Yalnızca Private Cloud Kullanıcıları için Teşhis Adımları

İzleme kullanıcı arayüzü oturumunuz yoksa:

  1. Hatanın bir politikanın yürütülmesi sırasında oluştuğunu doğrulayın. Ayrıntılı bilgi için Sorunun kaynağını belirleme bölümüne bakın.
  2. Hata politika yürütmesinden kaynaklanıyorsa devam edin. Politika sırasında hata oluştuysa devam edeceğim. Hata arka uç sunucusundan kaynaklandıysa Arka Uç Sunucusu'nda hata başlıklı makaleyi inceleyin.
  3. NGINX erişim günlüklerini API proxy'sindeki başarısız politikayı belirlemek için ve ayrıca benzersiz istek mesajı kimliği
  4. İleti İşleyici günlüklerini kontrol etme (/opt/apigee/var/log/edge-message-processor/logs/system.log) ve şunu arayın: benzersiz istek mesajı kimliği.
  5. Benzersiz istek mesajı kimliğini bulursanız istekle ilgili daha fazla bilgi edinip edinemeyeceğinizi bir neden sunmalısınız.

Çözünürlük

Politikayla ilgili sorunun nedenini belirlediyseniz politikanın düzeltilmesi ve proxy'nin yeniden dağıtılması gerekir.

Aşağıdaki örneklerde, farklı uyuşmazlıkların neden ve çözüm yollarının nasıl belirleneceği sorun.

500 Dahili Sunucu Hatası sorunlarını giderme konusunda daha fazla yardıma ihtiyacınız varsa veya başka bir şey olduğunu düşünüyorsanız Apigee ile iletişime geçin Destek.

1. Örnek: Arka uçtaki bir hata nedeniyle Hizmet Çağrısı politikasında hata oluştu sunucu

Arka uç sunucusuna yapılan çağrı, Hizmet Çağrı Politikası içinde 4XX veya 5XX olarak değiştirilirse, 500 Dahili Sunucu Hatası olarak değerlendirilir.

  1. Arka uç hizmetinin Hizmet içinde 404 hatası vererek başarısız olduğu bir örneği aşağıda bulabilirsiniz Açıklama metni politikası. Son kullanıcıya aşağıdaki hata mesajı gönderildi:
    {
    "fault":
         { "detail":
               { "errorcode":"steps.servicecallout.ExecutionFailed"
               },"faultstring":"Execution of ServiceCallout service_callout_v3_store_by_lat_lon
     failed. Reason: ResponseCode 404 is treated as error"
              }
         }
    }
    
    .
  2. Aşağıdaki iz kullanıcı arayüzü oturumunda, Hizmet'teki bir hatadan kaynaklanan 500 durum kodu gösteriliyor Açıklama metni politikası:

  3. Bu örnekte, "error" mülk, Hizmet Çağrısı politikasının nedenini listeliyor "ResponseCode 404 hata olarak değerlendirilir" hatası. Bu hata, Hizmet Çağrı Politikası'nda arka uç sunucu URL'si aracılığıyla erişilen kaynak kullanılabilir.
  4. Arka uç sunucusunda kaynağın kullanılabilirliğini kontrol edin. Kullanılamıyor olabilir geçici/kalıcı olarak ya da farklı bir konuma taşınmış olabilir.

Örnek 1 Çözünürlük

  1. Arka uç sunucusunda kaynağın kullanılabilirliğini kontrol edin. Kullanılamıyor olabilir geçici/kalıcı olarak ya da farklı bir konuma taşınmış olabilir.
  2. Hizmet Çağrı Politikası'ndaki arka uç sunucu URL'sini, geçerli ve mevcut bir gösterir.
  3. Kaynak yalnızca geçici olarak kullanılamıyorsa API isteğinde bulunduktan sonra kullanılabilir durumda olduğundan emin olun.

2. Örnek: Değişkenleri Ayıklama Politikası'nda hata

Şimdi, 500 Dahili Sunucu Hatasının bir hata sonucu ortaya çıktığı başka bir örneğe bakalım. inceleyerek sorunu nasıl gidereceğinizi ve çözeceğinizi öğrenin.

  1. Kullanıcı arayüzü oturumunda aşağıdaki izde, ayıklama işleminde bir hata nedeniyle 500 durum kodu gösteriliyor Değişkenler politikası:

  2. Başarısız olan Değişkenleri Ayıklama politikasını seçin, sayfayı aşağı kaydırın ve "Hata İçerik" bölümüne bakın:

  3. Hata İçeriği, "serviceCallout.oamCookieValidationResponse" değişkeni Değişkenleri Ayıklama politikası. Değişkenin adından da anlaşılacağı gibi, önceki Hizmet Çağrısı politikasının yanıtı.
  4. İzlemede Hizmet Çağrısı politikasını seçtiğinizde "serviceCallout.oamCookieValidationResponse" değişkeni ayarlanmadı. Bu arka uç hizmetine yapılan çağrının başarısız olduğunu ve boş bir yanıtla sonuçlandığını belirtir değişkenine eklenmelidir.
  5. Hizmet Çağrısı politikası başarısız olsa da, politikaların Hizmet'ten sonra yürütülmesi "continueOnError" olduğu için açıklama metni politikası devam ediyor Hizmet Açıklama Metni Politikası'nda bayrak ayarlandığında değeri "true" (doğru) olarak değiştirin:

    .
    <ServiceCallout async="false" continueOnError="true" enabled="true" name="Callout.OamCookieValidation">
      <DisplayName>Callout.OamCookieValidation</DisplayName>
      <Properties />
      <Request clearPayload="true" variable="serviceCallout.oamCookieValidationRequest">
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
      </Request>
      <Response>serviceCallout.oamCookieValidationResponse</Response>
      <HTTPTargetConnection>
        <Properties />
        <URL>http://{Url}</URL>
      </HTTPTargetConnection>
    </ServiceCallout>
    
  6. Bu API için &quot;X-Apigee.Message-ID&quot; benzersiz mesaj kimliğine dikkat edin aşağıdaki gibi izden istekte bulunun:
    1. "Kayıtlı Analytics Verileri"ni seçin bu aşamadan uzaklaştırılır.
    2. Aşağı kaydırıp X-Apigee.Message-ID'nin değerini not edin.

  7. İleti İşleyici günlüğünü görüntüleme (/opt/apigee/var/log/edge-message-processor/system.log) ve benzersiz olanı arayın 6. adımda not edilen mesaj kimliği. İlgili API için aşağıdaki hata mesajı gözlemlendi istek:
    2017-05-05 07:48:18,653 org:myorg env:prod api:myapi rev:834 messageid:rrt-04984fed9e5ad3551-c-wo-32168-77563  NIOThread@5 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[C:]@149081 useCount=1 bytesRead=0 bytesWritten=0 age=3002ms lastIO=3002ms .onConnectTimeout connectAddress=mybackend.domain.com/XX.XX.XX.XX:443 resolvedAddress=mybackend.domain.com/XX.XX.XX.XX
    
    .

    Yukarıdaki hata, Hizmet Çağrısı politikasının bir bağlantı nedeniyle başarısız olduğunu gösterir bağlantı kurulurken zaman aşımı hatası oluştu.

  8. Bağlantı zaman aşımı hatasının nedenini belirlemek için telnet komutunu kullanarak Mesaj İşleyen'lerden arka uç sunucusuna gönderebilirsiniz. Telnet komutu "Bağlantı zaman aşımına uğradı" hatası verdi hatası oluştu:
    telnet mybackend.domain.com 443
    Trying XX.XX.XX.XX...
    telnet: connect to address XX.XX.XX.XX: Connection timed out
    
    .

    Genellikle bu hata aşağıdaki durumlarda görülür:

    • Arka uç sunucusu, Uç İletisi'nden gelen trafiğe izin verecek şekilde yapılandırılmadığında İşlemciler.
    • Arka uç sunucusunun söz konusu bağlantı noktasını dinlememesi.

    Yukarıda gösterilen örnekte, Değişkenleri Ayıklama politikası başarısız olsa da, gerçek Bunun nedeni, Edge'in Hizmet Çağrısı'nda arka uç sunucusuna bağlanamamasıydı. politikası. Bu hatanın nedeni de arka uç son sunucusunun Edge İleti İşlemcilerinden gelen trafiğe izin vermelidir.

    Kendi Değişkenleri Ayıklama politikanız farklı davranır ve farklı bir ayar için başarısız olabilir bir neden sunmalısınız. Hatanın nedenine bağlı olarak sorunu uygun şekilde giderebilirsiniz Hata mesajını kontrol ederek Değişkenleri Ayıklama politikanız

Örnek 2 Çözünürlük

  1. Değişkenleri Ayıklama politikasındaki hatanın veya hatanın nedenini uygun şekilde düzeltin.
  2. Yukarıdaki örnekte belirtilen çözüm, ağ yapılandırmasını uç mesaj işlemcilerinden arka uç sunucunuza gelen trafiğe izin verin. Bu işlemi gerçekleştiren: izin verilenler listesine eklememiz Belirli arka uç sunucusundaki IP adresleri. Örneğin, Linux'ta, web'den gelen trafiğe izin vermek için iptables Mesaj İşleyici'nin arka uç sunucusundaki IP adresleri.

3. Örnek: JavaScript çağrısı politikasında hata

Şimdi, 500 Dahili Sunucu Hatasının bir hata nedeniyle ortaya çıktığı bir örneğe daha bakalım. inceleyebilirsiniz.

  1. Aşağıdaki kullanıcı arayüzü izlemesinde, Java Çağrı Politikası'ndaki bir hata nedeniyle 500 durum kodu gösterilmektedir:

  2. "Error" adlı akışı ve ardından başarısız olan Java Çağrı Politikası'nı seçin. aşağıdaki şekilde gösterilen hata ayrıntılarını alın:

  3. Bu örnekte, Özellikler bölümünün altındaki "error" özelliği, bu hatanın Oracle Veritabanı'na bağlanırken kullanılan, süresi dolmuş şifreden kaynaklandığını hedeflerinden birini belirlemektir. Kendi Java çağrınız farklı davranır ve error özelliğinde farklı bir mesajı doldurabilir.
  4. JavaScript çağrı politika kodunu kontrol edin ve olması gereken doğru yapılandırmayı onaylayın kullanılır.

Örnek 3 Çözünürlük

Çalışma zamanı istisnasından kaçınmak için Java çağrı kodunu veya yapılandırmasını uygun şekilde düzeltin. İçinde JavaScript çağrısı hatası örneğinde olduğu gibi, doğru şifrenin kullanılması gerekir. bağlantısı kurulduğundan emin olun.

Arka Uç Sunucusundaki Hata

500 Dahili Sunucu Hatasının kaynağı da arka uç sunucusu olabilir. Bu bölüm , hata arka uç sunucusundan geliyorsa sorunun nasıl giderileceği açıklanmaktadır.

Teşhis

Tüm Kullanıcılar İçin Teşhis Adımları

Diğer arka uç hatalarının nedeni büyük ölçüde değişiklik gösterebilir. Her bir durumu teşhis etmeniz gerekir. bağımsız olarak değiştirebilirsiniz.

  1. Hatanın arka uç sunucusundan kaynaklandığını doğrulayın. Ayrıntılı bilgi için Sorunun kaynağını belirleme bölümüne bakın.
  2. Hata arka uç sunucusundan kaynaklandıysa devam edin. Hata, Yeşil Ofis politika yürütme için daha fazla bilgi edinmek için Edge'de Yürütme Hatası Politika.
  3. Her oturum için Trace oturumuna erişiminiz olup olmadığına bağlı olarak, bağlantısını kestiğinizde ya da arka uç Node.js sunucusuysa:

Başarısız API çağrısı için İzleme oturumunuz yoksa:

  1. Başarısız istek için kullanıcı arayüzü izleme kullanılamıyorsa arka uç sunucusunu kontrol edin hata hakkında ayrıntılı bilgi almak için günlük.
  2. Mümkünse arka uç sunucusunda hata ayıklama modunu etkinleştirerek ve nedenini inceleyelim.

Başarısız API çağrısıyla ilgili bir İzleme oturumunuz varsa:

Trace oturumunuz varsa, aşağıdaki adımlar sorunu teşhis etmenize yardımcı olacaktır.

  1. İzleme aracında, 500 Dahili Sunucu ile başarısız olan API isteğini seçin Hata oluştu.
  2. Hata durumundan "Hedef sunucudan yanıt alındı" aşamasını seçin Aşağıdaki şekilde gösterilen API isteği:

  3. Hatayla ilgili ayrıntıları öğrenmek için "Yanıt İçeriği" bölümünü kontrol edin.

  4. Bu örnekte, bir SOAP Zarfı olan Yanıt İçeriği, hata dizesini "Yetkili Değil" mesajı. Bunun en olası nedeni sorun, doğru kimlik bilgilerinin (kullanıcı adı/şifre, erişim jetonu vb.) arka uç sunucusuna geri yüklenir. Bu sorun, doğru kimlik bilgilerini arka uç sunucusuna gidin.

Arka uç Node.js sunucusuysa:

  1. Arka uç bir Node.js Arka Uç Sunucusu ise Node.js günlüklerini kontrol edin belirli API Proxy'si için (hem Genel hem de Private Cloud kullanıcıları Node.js günlüklerini kontrol edin). Edge Private Cloud kullanıcısıysanız Mesaj İşleyici günlüklerinizi de kontrol edebilir Daha fazla ayrıntı için (/opt/apigee/var/log/edge-message-processor/logs/system.log) hata hakkında daha fazla bilgi edinin.

    Edge Kullanıcı Arayüzündeki NodeJS Günlükleri seçeneği - API Proxy'sinin Genel Bakış Sekmesi

Çözüm

  1. Hatanın nedenini belirledikten sonra arka uç sunucunuzdaki sorunu düzeltin.
  2. Bu bir Node.js arka uç sunucusuysa:
    1. Hatanın özel kodunuzdan kaynaklanıp kaynaklanmadığını kontrol edin ve mümkünse sorunu düzeltin.
    2. Hata, özel kodunuzdan kaynaklanmazsa veya yardıma ihtiyacınız olursa Apigee Desteği.

500 Dahili Sunucu Hatası sorunlarını giderme konusunda daha fazla yardıma ihtiyacınız varsa veya başka bir şey olduğunu düşünüyorsanız Apigee ile iletişime geçin Destek.

Sorunun kaynağını belirleme

500 Dahili Sunucu Hatasının atılıp atılmadığını belirlemek için aşağıdaki yordamlardan birini kullanın API proxy'si içinde veya arka uç sunucusu tarafından bir politika yürütülürken.

Kullanıcı arayüzünde Trace'i kullanma

Not: Bu bölümdeki adımlar hem Herkese açık hem de Private Cloud kullanıcıları.

  1. Sorun hâlâ devam ediyorsa etkilenen API için kullanıcı arayüzünde izlemeyi etkinleştirin.
  2. İzlemeyi yakaladıktan sonra, yanıt kodunu aşağıdaki gibi gösteren API isteğini seçin: 500.
  3. Başarısız API isteğinin tüm aşamalarını gözden geçirme ve hangi aşamanın döndürüldüğünü kontrol etme 500 Dahili Sunucu Hatası:
    1. Politika yürütülürken hata bildirilirse Edge Politikasında Yürütme Hatası bölümüne geçin.
    2. Arka uç sunucusu 500 Dahili Sunucu ile yanıt verdiyse Arka Uç Sunucuda Hata bölümüne geçin.

API Monitoring'i Kullanma

Not: Bu bölümdeki adımlar yalnızca Herkese Açık Bulut kullanıcıları tarafından uygulanabilir.

API İzleme; hata, performans, gecikme sorunlarını ve bunların kaynağını teşhis etmek için sorunlu alanları hızlı bir şekilde izole etmenizi sağlar. hedef URL'ler veya API platformu gibi farklı biçimlere sahip olur.

API Monitoring'i kullanarak API'lerinizle ilgili 5xx sorunlarını nasıl gidereceğinizi gösteren örnek bir senaryoyu inceleyin. Örneğin, 500 durum kodu veya steps.servicecallout.ExecutionFailed hata sayısı belirli bir eşiği aştığında bildirim almak için bir uyarı ayarlamak isteyebilirsiniz.

NGINX Erişimini Kullanma Günlükler

Not: Bu bölümdeki adımlar, Edge Private Cloud kullanıcıları içindir gerekir.

500 durum kodunun atılıp atılmadığını belirlemek için NGINX Erişim günlüklerine de bakabilirsiniz. API proxy'si içinde veya arka uç sunucusu tarafından bir politika yürütülürken. Bu sorun geçmişte oluşmuşsa veya sorun ara sıra ortaya çıkıyorsa ve kullanıcı arayüzünde izleri yakalayamıyor. Bu bilgileri proje başlatma belgesinden belirlemek için NGINX erişim günlükleri:

  1. NGINX erişim günlüklerini kontrol edin (/opt/apigee/var/log/edge-router/nginx/ <org>~ <env>.<port#>_access_log ).
  2. İlgili API proxy'si için 500 Hata olup olmadığını kontrol edin süresidir.
  3. 500 hata varsa hatanın politika mı yoksa hedef sunucu hatası mı olduğunu kontrol edin. aşağıdaki gibidir:

    Politika hatası gösteren Örnek Giriş

    Hedef Sunucu Hatası gösteren Örnek Giriş

  4. Bunun bir politika mı yoksa hedef sunucu hatası mı olduğunu belirledikten sonra:
    1. Aşağıdaki durumlarda Edge Politikasında Yürütme Hatası yapın bu bir politika hatasıdır.
    2. Hedefse Arka Uç Sunucuda Hata bölümüne geçin sunucu hatası.