Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Belirti
İstemci uygulaması şu mesajla birlikte 503 HTTP yanıt durumunu alıyor
API proxy çağrısının ardından Service Unavailable.
Hata mesajı
İstemci uygulaması aşağıdaki yanıt kodunu alır:
HTTP/1.1 503 Service Unavailable
Ayrıca, aşağıdaki hata mesajını da görebilirsiniz:
{
"fault": {
"faultstring": "The Service is temporarily unavailable",
"detail": {
"errorcode": "messaging.adaptors.http.flow.ServiceUnavailable"
}
}
}Olası Nedenler
| Neden | Açıklama | Şunun için geçerli sorun giderme talimatları: |
|---|---|---|
| Hedef sunucu bağlantıyı zamanından önce kapatıyor | İleti İşleyici hâlâ işlem yapılmışken hedef sunucu bağlantıyı zamanından önce bitirir istek yükünü gönderme. | Edge Herkese Açık ve Private Cloud kullanıcıları |
Sık kullanılan teşhis adımları
Başarısız isteğin Mesaj kimliğini belirleme
İzleme aracı
İzleme aracını kullanarak başarısız isteğin ileti kimliğini belirlemek için:
- Sorun hâlâ devam ediyorsa izleme oturumunu kaldırın.
- API çağrısı yapın ve sorunu yeniden oluşturun -
503 Service Unavailablemessaging.adaptors.http.flow.ServiceUnavailable.hata koduyla - Başarısız isteklerden birini seçin.
- AX aşaması'na gidip ileti kimliğini belirleme
(
X-Apigee.Message-ID) Aşama Ayrıntıları bölümüne gidin.
NGINX erişim günlükleri
NGINX erişim günlüklerini kullanarak başarısız isteğin ileti kimliğini belirlemek için:
503 hatalarının ileti kimliğini belirlemek için NGINX Erişim günlüklerine de bakabilirsiniz.
Bu, özellikle sorun geçmişte olduysa veya ara sıra devam ediyorsa işe yarar
ve kullanıcı arayüzünde izini yakalayamazsınız. NGINX erişim günlüklerindeki bu bilgileri belirlemek için aşağıdaki adımları uygulayın:
- NGINX erişim günlüklerini kontrol edin: (
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log) - Belirli bir sürede ilgili API proxy'si için
503hatası olup olmadığını kontrol edin (sorun geçmişte oluşmuşsa) veya503ile hâlâ başarısız olan istekler varsa. - X-Apigee-fault-codeMessaging.adaptors.http.flow.Servicelarından yararlanarak herhangi bir
503hatası varsa aşağıdaki örnekte gösterildiği gibi, bu tür bir veya daha fazla isteğin ileti kimliğini not edin:503Hatası'nı gösteren Örnek Giriş
Neden: Hedef sunucu bağlantıyı zamanından önce kapatıyor
Teşhis
- Herkese Açık Bulut veya Private Cloud kullanıcısıysanız:
- İzleme aracını kullanma (Yaygın teşhis adımlarında açıklandığı gibi)
ve Analytics Verileri Kaydı bölmesinde aşağıdakilerin ikisinin de bulunduğunu doğrulayın:
- X-Apigee.fault-code:
messaging.adaptors.http.flow.ServiceUnavailable - X-Apigee.fault-source:
target

- X-Apigee.fault-code:
- İzleme aracını kullanma (Yaygın teşhis adımlarında açıklandığı gibi)
ve hemen sonrasında Hata bölmesinde aşağıdakilerin her ikisinin de ayarlandığını doğrulayın
TARGET_REQ_FLOWeyalet özelliği:- error.class:
com.apigee.errors.http.server.ServiceUnavailableException - error.cause:
Broken pipe

- error.class:
- Daha ayrıntılı inceleme için tcpdump kullanma bölümüne gidin.
- İzleme aracını kullanma (Yaygın teşhis adımlarında açıklandığı gibi)
ve Analytics Verileri Kaydı bölmesinde aşağıdakilerin ikisinin de bulunduğunu doğrulayın:
- Private Cloud kullanıcısıysanız:
- Başarısız isteğin mesaj kimliğini belirleyin.
- İleti İşleyen günlüğünde ileti kimliğini arayın
(
/opt/apigee/var/log/edge-message-processor/logs/system.log). - Aşağıdaki istisnalardan birini görürsünüz:
1. İstisna: java.io.IOException: Broken afiş atar with channel to channel ClientÇıkışChannel
2021-01-30 15:31:14,693 org:anotherorg env:prod api:myproxy rev:1 messageid:myorg-opdk-test-1-30312-13747-1 NIOThread@1 INFO HTTP.SERVICE - ExceptionHandler.handleException() : Exception java.io.IOException: Broken pipe occurred while writing to channel ClientOutputChannel(ClientChannel[Connected: Remote:IP:PORT Local:0.0.0.0:42828]@8380 useCount=1 bytesRead=0 bytesWritten=76295 age=2012ms lastIO=2ms isOpen=false)
veya
İstisna 2: onExceptionWrite istisnası: {}
java.io.IOException: Bozuk ardışık düzen2021-01-31 15:29:37,438 org:anotherorg env:prod api:503-test rev:1 messageid:leonyoung-opdk-test-1-18604-13978-1 NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context$2.onException() : ClientChannel[Connected: Remote:IP:PORT Local:0.0.0.0:57880]@8569 useCount=1 bytesRead=0 bytesWritten=76295 age=3180ms lastIO=2 ms isOpen=false.onExceptionWrite exception: {} java.io.IOException: Broken pipe
- Bu istisnaların her ikisi de, İleti İşleyen
arka uç sunucusuna yük isteği gönderirse bağlantı,
arka uç sunucusuna gidin. Bu nedenle, İleti İşleyen (
java.io.IOException: Broken pipe) istisnayı uygular. Remote:IP:PORT, çözümlenen arka uç sunucusunu gösterir IP adresi ve bağlantı noktası numarası.- Yukarıdaki hata mesajında yer alan
bytesWritten=76295özelliği, İleti İşleyici'nin arka uca76295baytlık yük gönderdiğini sunucuyu devre dışı bırakmaya çalışın. bytesRead=0özelliği, Mesaj İşleyen'in arka uç sunucusundan herhangi bir veri (yanıt) almıştır.- Bu sorunu daha ayrıntılı incelemek için arka uçta bir
tcpdumptoplayın veya İleti İşleyici'ye vermeniz gerekir ve bunu aşağıda açıklandığı şekilde analiz eder.
tcpdump kullanma
-
Arka uç sunucusunda veya Mesaj İşleyici'de şunu kullanarak bir
tcpdumpyakalayın: şu komutları kullanın:Arka uç sunucusunda
tcpdumptoplama komutu:tcpdump -i any -s 0 host MP_IP_ADDRESS -w FILE_NAME
Mesaj İşleyicide
tcpdumptoplama komutu:tcpdump -i any -s 0 host BACKEND_HOSTNAME -w FILE_NAME
- Yakalanan
tcpdumpöğesini analiz edin:Örnek tcpdump çıkışı (İleti İşleyici'de toplanır):

Yukarıdaki
tcpdumpiçinde aşağıdakileri görebilirsiniz:4paketinde, Mesaj İşleyici birPOSTisteği gönderdi. arka uç sunucusuna gidin.5,8,9,10paketinde,11, Mesaj İşleyici istek yükünü arka uç sunucusuna gidin.6ve7paketlerinde arka uç sunucusuACK.- Ancak
12paketinde,ACKile yanıt vermek yerine ve daha sonra da e-postayla yanıt vererek arka uç sunucusu bunun yerineFIN ACKile yanıt verir ve bağlantıyı iptal edebilir. - Bu, arka uç sunucusunun bağlantıyı zamanından önce kapattığını açıkça gösteriyor yalnızca mesaj işleyen tarafından da onaylanabilir.
- Bu durum, İleti İşleyici'nin
IOException: Broken Pipehata mesajını verir ve istemciye bir503döndürür.
Çözünürlük
- Uygulama ve ağ ekiplerinizle birlikte ya da hem uygulama hem de ağ ekiplerinizle birlikte çalışarak arka uç sunucu tarafında erken bağlantı kesintileriyle ilgili sorun.
- Arka uç sunucu uygulamasının zaman aşımına uğramadığından veya bağlantıyı sıfırlamadığından emin olun önce çalıştırılması gerekir.
- Apigee ile arka uç sunucusu arasında herhangi bir ara ağ iletişimi cihazınız ya da katmanınız varsa Ardından, istek yükünün tamamı alınmadan önce zaman aşımına uğramadıklarından emin olun.
Sorun devam ederse Teşhis bilgileri toplanması gerekiyor başlıklı makaleyi inceleyin.
Teşhis bilgileri toplanmalıdır
Yukarıdaki talimatları uygulamanıza rağmen sorun devam ederse aşağıdaki Apigee Edge Destek Ekibi ile iletişime geçin:
Herkese açık Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Kuruluş adı
- Ortam adı
- API Proxy adı
503hatasını yeniden oluşturmak içincurlkomutunu tamamlayın503 Service Unavailablehatasına sahip isteği içeren izleme dosyası- Şu anda
503hataları görünmüyorsa dönemi Geçmişte503hata oluştuğunda saat dilimi bilgileri
Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Başarısız istekler için tam hata mesajı gözlemlendi
- Gözlemlediğiniz kuruluş, ortam adı ve API proxy adı
503hata - API Proxy paketi
503 Service Unavailablehatasına sahip istekleri içeren izleme dosyası- NGINX erişim günlükleri
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log - Mesaj İşleyici günlükleri
/opt/apigee/var/log/edge-message-processor/logs/system.log 503hatalarının meydana geldiği saat dilimi bilgilerini içeren dönem- İleti İşlemcileri ve arka uç sunucusunda
Tcpdumpstoplandı. hata oluştu