Zaman aşımı hatası

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

Belirti

Edge kullanıcı arayüzü veya Management API aracılığıyla API proxy revizyonlarının dağıtımı, zaman aşımı hatasıyla başarısız oluyor.

Hata mesajları

Click to change deployment status. 
The revision is deployed and traffic can flow, but flow may be impaired. 
Error: Call timed out; either server is down or server is not reachable

Olası nedenler

Bu sorunun tipik nedenleri şunlardır:

Neden Ayrıntılar İçin
Ağ Bağlantısı Sorunu Ağ bağlantısı sorunları veya güvenlik duvarı kuralları nedeniyle yönetim sunucusu ile mesaj işlemcisi arasında iletişim hatası. Yalnızca özel bulut kullanıcıları
Büyük API Proxy Paketi API proxy paketi büyükse Mesaj İşleyici'nin etkinleştirilmesi uzun sürebilir ve bu durum RPC zaman aşımlarına yol açar. Özel ve Genel Bulut Kullanıcıları

Ağ Bağlantısı Sorunu

Not: Yalnızca Edge Private Cloud kullanıcıları aşağıdaki adımları uygulayabilir. Edge Public Cloud kullanıyorsanız Apigee Edge Destek Ekibi ile iletişime geçin.

Teşhis

  1. Aşağıdaki yönetim API çağrısını kullanarak hatayı gösteren API'nin dağıtım durumunu alın:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>

    Hatayı gösteren örnek çıktı:

    { 
                    "error": "Call timed out; either server is down or server is not reachable", 
                    "status": "error", 
                    "type": [ 
                    "message-processor" 
                    ], 
                    "uUID": "ebbc1078-cbde-4a00-a7db-66a3c1b2b748" 
                    }, 
                    { 
                    "status": "deployed", 
                    "type": [ 
                    "message-processor" 
                    ], 
                    "uUID": "204e2b7e-52f7-46d9-b458-20f9bfb51e6d" 
                    }, 
                    { 
                    "status": "deployed", 
                    "type": [ 
                    "router" 
                    ], 
                    "uUID": "967e63c6-ee95-47c0-9608-f4a32638fb1e" 
                    }, 
                    { 
                    "status": "deployed", 
                    "type": [ 
                    "router" 
                    ], 
                    "state" : "error"
                    } 

    Yukarıdaki örnek çıktı, hatanın UUID'si "ebbc1078-cbde-4a00-a7db-66a3c1b2b748" olan bir mesaj işlemcisinde oluştuğunu gösteriyor.

  2. API proxy'nizin dağıtım durumu çıkışına göre, hatayı gösteren ilgili UUID ile her bir Message Processor'a giriş yapın ve aşağıdaki adımları uygulayın:
    1. Mesaj İşleyici'nin 4528 numaralı bağlantı noktasını dinleyip dinlemediğini kontrol edin:
      netstat -an | grep LISTEN | grep 4528

      Mesaj İşleyici 4528 numaralı bağlantı noktasında dinleme yapmıyorsa Mesaj İşleyici'yi yeniden başlatın:

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    2. Yukarıdaki 1. adımda gösterilen yönetim API'si çağrısını kullanarak API proxy'sinin dağıtım durumunu yeniden kontrol edin. Hata yoksa sorun çözülmüş demektir.
  3. Sorun devam ederse aşağıdaki adımları uygulayarak Yönetim Sunucusu'ndan Mesaj İşlemcisi'ne 4528 numaralı bağlantı noktasında bağlantıyı test edin:
    1. Telnet kullanılabiliyorsa telnet'i kullanın:
      telnet <MessageProcessor_IP> 4528
    2. Telnet kullanılamıyorsa bağlantıyı aşağıdaki gibi netcat ile kontrol edin:
      nc -vz <MessageProcessor_IP> 4528
    3. "Bağlantı reddedildi" veya "Bağlantı zaman aşımına uğradı" yanıtını alırsanız ağ operasyonları ekibinizle iletişime geçin.
  4. Aşağıdaki adımları uygulayarak 4526 numaralı bağlantı noktasında Mesaj İşleyici'den Yönetim Sunucusu'na bağlantıyı test edin:
    1. Telnet kullanılabiliyorsa telnet'i kullanın:
      telnet <management-server-IP> 4526
    2. Telnet kullanılamıyorsa bağlantıyı aşağıdaki gibi netcat ile kontrol edin:
      nc -vz <management-server-IP> 4526 
    3. "Bağlantı reddedildi" veya "Bağlantı zaman aşımına uğradı" yanıtını alırsanız ağ operasyonları ekibinizle iletişime geçin.
  5. Ağ işlemleri ekibinizle birlikte çalışarak aşağıdakileri yapın:
    1. Hem yönetim sunucusunda hem de mesaj işlemcisinde RPC protokolüne izin verildiğinden emin olun. İşlemci.
    2. Yönetim sunucusu ile ileti işlemcileri arasında oluşturulan güvenlik duvarı kısıtlamalarını veya güvenlik kurallarını kaldırarak yönetim sunucusunda 4526 numaralı bağlantı noktasına ve yönetim sunucusundan ileti işlemcilerine 4528 numaralı bağlantı noktası üzerinden bağlantı kurulmasına izin verin.
  6. Dağıtım durumunu tekrar kontrol edin (yukarıdaki 1. adıma bakın). Herhangi bir hata görmüyorsanız hata çözülmüş demektir.
  7. Sorun devam ederse Mesaj İşleyici'de ağ sorunu olup olmadığını kontrol edin. Ağ sorunu varsa zaman aşımı hatası gösteren belirli mesaj işlemcisini (dağıtım durumu çıkışına göre) yeniden başlatmak sorunu düzeltebilir:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  8. Sorun devam ederse Yönetim Sunucusu günlüklerini şu konumda kontrol edin: (/opt/apigee/var/log/edge-management-server/logs/system.log).

    Yönetim sunucusu günlüğünden örnek çağrı zaman aşımına uğradı hatası

    2016-05-17 09:29:56,448 org:myorg env:prod qtp281969267-360792 ERROR DISTRIBUTION - RemoteServicesConfigEventHandler.configureServers() : exception for server with uuid e1381db7-d83b-4752-ae04-2de33f07e555 : cause = RPC Error 504: Call timed out communication error = true 
            com.apigee.rpc.RPCException: Call timed out 
            at com.apigee.rpc.impl.AbstractCallerImpl.handleTimeout(AbstractCallerImpl.java:64) ~[rpc-1.0.0.jar:na] 
            at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall.handleTimeout(RPCMachineImpl.java:483) ~[rpc-1.0.0.jar:na] 
            at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall.access$000(RPCMachineImpl.java:402) ~[rpc-1.0.0.jar:na] 
            at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall$1.run(RPCMachineImpl.java:437) ~[rpc-1.0.0.jar:na] 
            at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:532) ~[netty-all-4.0.0.CR1.jar:na] 
            at io.netty.util.HashedWheelTimer$Worker.notifyExpiredTimeouts(HashedWheelTimer.java:430) ~[netty-all-4.0.0.CR1.jar:na] 
            at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:371) ~[netty-all-4.0.0.CR1.jar:na] 
            at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_79] 
            

    Yukarıdaki örnekte gösterilene benzer bir hata görürseniz ağda yavaşlama olması durumunda Yönetim Sunucusu'nun Mesaj İşleyici'ye bağlanması için zaman tanınması amacıyla Yönetim Sunucusu'ndaki RPC zaman aşımını artırın.

Çözünürlük

Not: Yalnızca Edge Private Cloud kullanıcıları aşağıdaki adımları uygulayabilir. Edge Public Cloud kullanıyorsanız Apigee Edge Destek Ekibi ile iletişime geçin.

  1. RPC zaman aşımını artırmak için aşağıdaki adımları uygulayın:
    1. Henüz yoksa /opt/apigee/customer/application/management-server.properties Yönetim Sunucusu makinesinde dosyayı oluşturun.
    2. Bu dosyaya aşağıdaki satırı ekleyin:
      conf_cluster_rpc.connect.timeout=<time in seconds>

      Varsayılan RPC zaman aşımı değeri 10'dur ve bu değerin 40 saniyeye çıkarılması önerilir. Aşağıdaki gibi ayarlayın:

      conf_cluster_rpc.connect.timeout=40
    3. Bu dosyanın sahibi apigee olmalıdır:
      chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    4. Yönetim sunucusunu yeniden başlatın:
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    5. Birden fazla yönetim sunucunuz varsa yukarıdaki adımları tüm yönetim sunucularında tekrarlayın.
    6. API proxy'sini Edge kullanıcı arayüzünde veya Edge yönetim API çağrısını kullanarak dağıtın. API proxy'si herhangi bir sorun olmadan dağıtılırsa sorun çözülmüş demektir.
  2. Sorun devam ederse Yönetim Sunucusu ve Mesaj İşleyici'den tcpdump komutunu toplayın. Her sunucuda tcpdump komutunu etkinleştirin ve ardından API proxy'sinin dağıtımını kullanıcı arayüzünden veya yönetim API'sini kullanarak başlatın:
    1. Yönetim sunucusundan aşağıdaki tcpdump komutunu çalıştırın:
      tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
    2. Aşağıdaki tcpdump komutunu Mesaj İşleyici'den çalıştırın:
      tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
    3. tcpdump'ları analiz etme ve sorunu daha ayrıntılı bir şekilde giderme konusunda yardım almak için Apigee Edge Destek Ekibi ile iletişime geçin.

Büyük API Proxy Paketi

Teşhis

  1. Dağıtım hatasının gözlemlendiği API proxy paketinin boyutunu kontrol edin.
  2. Boyut makul ölçüde büyükse (10 MB veya daha yüksek) Mesaj İşleyicisi'nin API proxy'sini etkinleştirmek için daha fazla zamana ihtiyacı olabilir.
  3. API proxy paketi boyutu 15 MB'tan büyükse API Proxy Bundle larger than 15MB (API Proxy Paketi 15 MB'tan Büyük) bölümüne gidin.

Çözünürlük

Not: Yalnızca Edge Private Cloud kullanıcıları aşağıdaki adımları uygulayabilir. Edge Public Cloud kullanıyorsanız Apigee Edge Destek Ekibi ile iletişime geçin.

Yönetim sunucusunda RPC zaman aşımını artırın. Böylece Mesaj İşleyici, büyük API proxy paketlerini etkinleştirmek için yeterli zamana sahip olur. RPC zaman aşımı değerini artırmak için aşağıdaki adımları uygulayın:

  1. Henüz yoksa Yönetim Sunucusu makinesinde /opt/apigee/customer/application/management-server.properties dosyasını oluşturun.
  2. Bu dosyaya aşağıdaki satırı ekleyin:
    conf_cluster_rpc.connect.timeout=<time in seconds>

    Varsayılan RPC zaman aşımı değeri 10'dur ve bu değerin 40 saniyeye çıkarılması önerilir. Aşağıdaki gibi ayarlayın:

    conf_cluster_rpc.connect.timeout=40
  3. Bu dosyanın sahibi apigee olmalıdır:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
  4. Yönetim sunucusunu yeniden başlatın:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. Birden fazla yönetim sunucunuz varsa yukarıdaki adımları tüm yönetim sunucularında tekrarlayın.

Sorun devam ederse daha fazla yardım için Apigee Edge Destek Ekibi ile iletişime geçin.