Datastore'a Erişilirken Hata Oluştu

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

Belirti

API proxy düzeltmelerinin Edge kullanıcı arayüzü veya Edge management API çağrısı aracılığıyla dağıtılması hata "Error while accessing datastore".

Hata mesajları

Error in deployment for environment qa.

The revision is deployed, but traffic cannot flow. Error while accessing datastore;Please retry later

Olası Nedenler

Bu sorunun tipik nedenleri şunlardır:

  1. Neden Ayrıntılar Şunlar için:
    Ağ Bağlantısı Sorunu Mesaj İşleyici ile Cassandra arasında iletişim kurma Ağ nedeniyle Mesaj İşleyici ile Cassandra arasındaki iletişim hatası veya güvenlik duvarı kurallarını kontrol edin. Edge Private Cloud kullanıcıları
    Cassandra'dan kaynaklanan dağıtım hataları yeniden başlatılır Rutin kapsamında yeniden başlatıldığı için Cassandra düğümleri kullanılamıyor bakım. Edge Private Cloud kullanıcıları
    Cassandra'da okuma isteği gecikmesinde ani artış Cassandra düğümleri çok sayıda eşzamanlı okuma işlemi gerçekleştiriyorsa okuma isteği gecikmesindeki ani artış nedeniyle yavaş yanıt verebilir. Edge Private Cloud kullanıcıları
    15 MB'tan büyük API Proxy Paketi Cassandra, boyutu 15 MB'tan büyük olan API proxy paketlerine izin vermeyecek şekilde seçin. Edge Private Cloud kullanıcıları

    İletiler arasında ağ bağlantısı sorunu Processor ve Cassandra

    Teşhis

    Not: Aşağıdaki adımları yalnızca Edge Private Cloud kullanıcıları gerçekleştirebilir. Eğer Edge Public Cloud kullanıyorsanız Apigee Edge Destek Ekibi ile iletişime geçin.

    1. API proxy'sinin dağıtımını kaldırıp yeniden dağıtın. Geçici bir bağlantı sorunu oluştuysa Cassandra'nın ortak çalışmasının bir parçası olmuşsa hata çözülebilir.

      UYARI: Hatalar Üretim'de görülüyorsa dağıtımı kaldırmayın bahsedeceğim.

    2. Sorun devam ederse aşağıdaki yönetim AP çağrısını yaparak veya bileşenlerde hata olup olmadığını kontrol edin:
      curl -u sysadmin@email.com https://management:8080/v1/o/<org>/apis/<api>/deployments

      Bir cihazda veri deposuna erişirken hatayı gösteren örnek dağıtım durumu çıkışı bilgi edinin

      {
      "environment" : [ {
      "aPIProxy" : [ {
      "name" : "simple-python",
      "revision" : [ {
      "configuration" : {
      "basePath" : "/",
      "steps" : [ ]
      },
      "name" : "1",
      "server" : [ {
      "status" : "deployed",
      "type" : [ "message-processor" ],
      "uUID" : "2acdd9b2-17de-4fbb-8827-8a2d4f3d7ada"
      }, {
      "error" : "Error while accessing datastore;Please retry later",
      "errorCode" : "datastore.ErrorWhileAccessingDataStore",
      "status" : "error",
      "type" : [ "message-processor" ],
      "uUID" : "42772085-ca67-49bf-a9f1-c04f2dc1fce3"
      } 
      "state" : "error"
      } 
    3. Dağıtım hatasını gösteren İleti İşleyicileri yeniden başlatın. Bir geçici bir ağ sorunu varsa hata çözülecektir:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    4. Dağıtımın, teslim edilen İleti İşleyici'de başarılı olup olmadığını görmek için 2. adımı yeniden başlatıldı. Herhangi bir hata yoksa bu, sorunun çözüldüğünü gösterir.
    5. Mesaj işlemcisinin 9042 numaralı bağlantı noktasındaki her bir Cassandra düğümüne bağlanıp bağlanamadığını kontrol edin ve 9160:
      1. Telnet kullanılabiliyorsa telnet'i kullanın:
        telnet <Cassandra_IP> 9042
        telnet <Cassandra_IP> 9160
      2. Telnet kullanılamıyorsa bağlantıyı aşağıdaki şekilde kontrol etmek için netcat'i kullanın:
        nc -vz <Cassandra_IP> 9042
        nc -vz <Cassandra_IP> 9160
      3. "Bağlantı Reddedildi" yanıtını alırsanız veya "Bağlantı zaman aşımına uğradı" RACI matrisine geldi.
    6. Sorun devam ederse Cassandra düğümlerinden her birinin bağlantı noktası 9042 ve bağlantı noktası 9160:
      netstat -an | grep LISTEN | grep 9042
      netstat -an | grep LISTEN | grep 9160
    7. Cassandra düğümleri 9042 veya 9160 numaralı bağlantı noktasında dinlemiyorsa belirli Cassandra düğümleri:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
    8. Sorun devam ederse ağ işlemleri ekibinizle iletişime geçin.

Çözünürlük

Ağ işlemleri ekibinizle birlikte çalışarak ağ bağlantısı sorununun Message Processor ve Cassandra.

Cassandra'nın yeniden başlatılmasından kaynaklanan dağıtım hataları

Cassandra düğümleri genellikle rutin bakım kapsamında düzenli olarak yeniden başlatılır. API ise Cassandra bakım çalışmaları sırasında proxy'ler dağıtıldığından dağıtımlar, Cassandra veri deposuna erişimi sorunu.

Not: Aşağıdaki adımları yalnızca Edge Private Cloud kullanıcıları gerçekleştirebilir. Şu durumda: Edge Public Cloud kullanıyorsanız Apigee Edge Destek Ekibi ile iletişime geçin.

Teşhis

  1. Cassandra düğümlerinin dağıtım sırasında yeniden başlatılıp başlatılmadığını kontrol edin.Bu durum, Cassandra günlüğünü veya Cassandra düğümünün en son başlatma zamanı günlüklerini kontrol ederek:

    grep: "shutdown" /opt/apigee/var/log/apigee-cassandra/system.log

Çözünürlük

  1. Cassandra'nın çalışır durumda olduğundan emin olun.
  2. Mesaj işlemcilerinin 9042 numaralı bağlantı noktası üzerinden Cassandra veri deposuna bağlanıp bağlanamadığını kontrol edin. 9160.

Cassandra'da okuma isteği gecikmesinde ani artış

Cassandra'da okuma sayısının yüksek olması bireysel kullanım alanlarına ve trafik kalıplarına bağlıdır ve Cassandra'dan okuma erişimi gerektiren politikalar içeren proxy'lerde kullanılabilir.

Örneğin, OAuth politikaları için yenileme_token izin türüne yönelik bir GET çağrısı çağrılırsa ve yenileme jetonu birçok erişim jetonuyla ilişkilendirildiğinden, bu durum yüksek miktarlarda Cassandra'dan okuyor. Bu durum Cassandra'da okuma isteği gecikmesinde artışa neden olabilir.

Teşhis

Not: Aşağıdaki adımları yalnızca Edge Private Cloud kullanıcıları gerçekleştirebilir. Şu durumda: Edge Public Cloud kullanıyorsanız Apigee Edge Destek Ekibi ile iletişime geçin.

  1. Beta Monitoring kontrol panelini yüklediyseniz, Cassandra kontrol paneline bakın ve "Okuma İstekleri"ni inceleyin sorunun döngüsü grafiğidir. Ayrıca "Oku Gecikme İste".
  2. Okuma isteklerini kontrol etmek ve okuma gecikmelerini kontrol etmek için kullanılan alternatif araç nodetool cfstats komutudur. Bkz. Cassandra dokümanlarına göz atın.

Çözünürlük

Not: Aşağıdaki adımları yalnızca Edge Private Cloud kullanıcıları gerçekleştirebilir. Şu durumda: Edge Public Cloud kullanıyorsanız Apigee Edge Destek Ekibi ile iletişime geçin.

  1. Cassandra'nın performansı normale döndüğünde dağıtımı tekrar deneyin. Tüm belgenin Cassandra'nın zili normaldir.
  2. (İsteğe bağlı) Bağlantının etkin olduğundan emin olmak için mesaj işlemcilerini periyodik olarak yeniden başlatın. yerleşik olarak bulunur.
  3. Uzun vadeli bir çözüm için, katkı sağlama olasılığı yüksek olan API trafiği kalıplarını daha fazla okuma sağladığını görebilirsiniz. Bu sorunu giderme konusunda yardım almak için Apigee Edge Destek Ekibi ile iletişime geçin.
  4. Mevcut Cassandra düğümleri gelen trafiği yönetmek için yeterli değilse donanım kapasitesini veya Cassandra veri deposu düğümlerinin sayısını artırın. sağlayabilir.

API 15 MB'tan büyük Proxy Paketi

API proxy paketlerinin boyutu Cassandra'da 15 MB ile sınırlıdır. API'nin boyutu proxy paketi 15 MB'tan büyükse, "Veri deposuna erişilirken hata oluştu" mesajını görürsünüz. CANNOT TRANSLATE API proxy'sini dağıtmayı deneyin.

Teşhis

Not: Aşağıdaki adımları yalnızca Edge Private Cloud kullanıcıları gerçekleştirebilir. Şu durumda: Edge Public Cloud kullanıyorsanız Apigee Edge Destek Ekibi ile iletişime geçin.

  1. İleti İşleyici günlüklerini kontrol etme (/opt/apigee/var/log/edge-message-processor/logs/system.log) ve mevcut bir Dağıtım sırasında oluşan hatalar için
  2. Aşağıdaki şekilde gösterilene benzer bir hata görüyorsanız dağıtım hatası API proxy paketi boyutunun > 15 MB.
    2016-03-23 18:42:18,517 main ERROR DATASTORE.CASSANDRA - AstyanaxCassandraClient.fetchDynamicCompositeColumns() : Error while querying columnfamily : [api_proxy_revisions_r21, adevegowdat@v1-node-js] for rowkey:{}
    com.netflix.astyanax.connectionpool.exceptions.TransportException: TransportException: [host=None(0.0.0.0):0, latency=159(486), attempts=3]org.apache.thrift.transport.TTransportException: Frame size (20211500) larger than max length (16384000)!
            at com.netflix.astyanax.thrift.ThriftConverter.ToConnectionPoolException(ThriftConverter.java:197) ~[astyanax-thrift-1.56.43.jar:na]
            at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:65) ~[astyanax-thrift-1.56.43.jar:na]
    ...<snipped>
            Caused by: org.apache.thrift.transport.TTransportException: Frame size (20211500) larger than max length (16384000)!
            at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:137) ~[libthrift-0.9.1.jar:0.9.1]
            at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101) ~[libthrift-0.9.1.jar:0.9.1]
            at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) ~[libthrift-0.9.1.jar:0.9.1]
    ...<snipped>

Çözünürlük

Çok fazla kaynak dosyası varsa API proxy paketi büyük olabilir. Şunları kullanın: aşağıdaki çözümleri inceleyin:

1. Çözüm: Kaynak dosyaları Ortam veya Kuruluş düzeyine taşıma

  1. NodeJS Komut Dosyası dosyaları ve modülleri, JavaScript dosyaları gibi kaynak dosyaları taşıyın. JAR dosyalarını ortam veya kuruluş düzeyi olarak ayarlar. Kaynak dosyaları hakkında daha fazla bilgi edinmek için Edge belgelerini inceleyin.
  2. API proxy'sini dağıtın ve hatanın düzelip düzelmediğine bakın.

Sorun devam ediyorsa veya kaynak dosyaları ortama ya da kuruluşa taşıyamıyorsanız belirleyip 2. çözümü uygulayabilirsiniz.

2. Çözüm: Cassandra'da API proxy paketi boyutunu artırın

Not: Aşağıdaki adımları yalnızca Edge Private Cloud kullanıcıları gerçekleştirebilir. Şu durumda: Edge Public Cloud kullanıyorsanız Apigee Edge Destek Ekibi ile iletişime geçin.

Cassandra mülkünün ikincil çerçevesinin boyutunu artırmak için şu adımları uygulayın: aktarım boyutu, Kenar:

  1. Aşağıdaki dosya mevcut değilse oluşturun:
    /opt/apigee/customer/application/cassandra.properties
  2. Aşağıdaki satırı dosyaya <size> yerine ekleyerek ekleyin. e-tablonuz için büyük paket:
    conf_cassandra_thrift_framed_transport_size_in_mb=<size>
  3. Cassandra'yı yeniden başlatın:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  4. Kümedeki tüm Cassandra düğümlerinde 1. ila 3. adımları tekrarlayın.

Sorun devam ederse Apigee Edge Destek Ekibi ile iletişime geçin.