Datastore'a Erişilirken Hata Oluştu

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

Belirti

API proxy düzeltmelerinin Edge kullanıcı arayüzü veya Edge Management API çağrısı aracılığıyla dağıtımı, "Error while accessing datastore" hatasını alarak başarısız oluyor.

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:
    Mesaj İşleyici ve Cassandra arasındaki Ağ Bağlantısı Sorunu Ağ bağlantısı sorunları veya güvenlik duvarı kuralları nedeniyle Mesaj İşleyici ile Cassandra arasındaki iletişim hatası. Edge Private Cloud kullanıcıları
    Cassandra'nın yeniden başlatılmasından kaynaklanan dağıtım hataları Cassandra düğümleri, rutin bakım kapsamında yeniden başlatıldığı için kullanılamıyor. 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 API proxy paketlerine izin vermeyecek şekilde yapılandırılmıştır. Edge Private Cloud kullanıcıları

    Mesaj İşleyici ve Cassandra arasındaki Ağ Bağlantısı Sorunu

    Teşhis

    Not: Aşağıdaki adımları yalnızca Edge Private Cloud kullanıcıları gerçekleştirebilir. Edge Public Cloud'daysanı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. Mesaj İşleyici ile Cassandra arasında geçici bir bağlantı sorunu varsa hata kaybolabilir.

      UYARI: Hatalar Üretim ortamında görülürse dağıtımı kaldırmayın.

    2. Sorun devam ederse dağıtım durumunu kontrol etmek ve herhangi bir bileşende hata olup olmadığını kontrol etmek için aşağıdaki yönetim AP çağrısını yürütün:
      curl -u sysadmin@email.com https://management:8080/v1/o/<org>/apis/<api>/deployments
      

      Mesaj İşleyicilerinden birindeki veri deposuna erişirken Hata oluştu'yu gösteren örnek dağıtım durumu çıkışı

      {
      "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'ni yeniden başlatın. Geçici bir ağ sorunu meydana geldiyse hata kaybolur:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      
    4. Yeniden başlatılan Mesaj İşleyici'de dağıtımın başarılı olup olmadığını görmek için 2. adımı tekrarlayın. Herhangi bir hata bulunmadıysa bu, sorunun çözüldüğünü gösterir.
    5. Mesaj işlemcisinin 9042 ve 9160 bağlantı noktalarındaki her Cassandra düğümüne bağlanıp bağlanamadığını kontrol edin:
      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" veya "Bağlantı zaman aşımına uğradı" yanıtını alırsanız ağ işlemleri ekibinizle iletişime geçin.
    6. Sorun devam ederse Cassandra düğümlerinin her birinin 9042 ve 9160 bağlantı noktalarında dinleme yapıp yapmadığını kontrol edin:
      netstat -an | grep LISTEN | grep 9042
      netstat -an | grep LISTEN | grep 9160
      
    7. Cassandra düğümleri 9042 veya 9160 numaralı bağlantı noktasını dinlemiyorsa ilgili Cassandra düğümlerini yeniden başlatın:
      /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ğ operasyonları ekibinizle birlikte çalışarak Mesaj İşleyici ile Cassandra arasındaki ağ bağlantısı sorununu çözün.

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

Cassandra düğümleri genellikle rutin bakımın bir parçası olarak düzenli aralıklarla yeniden başlatılır. API proxy'leri Cassandra bakım çalışması sırasında dağıtılırsa Cassandra veri deposuna erişilemediği için dağıtımlar başarısız olur.

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

Teşhis

  1. Dağıtım sırasında Cassandra düğümlerinin yeniden başlatılıp başlatılmadığını kontrol edin.Bu işlem, Cassandra günlüğünü veya Cassandra düğümünün en son başlatma süresi günlüklerini kontrol ederek yapılabilir:

    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 İşleyicilerinin, 9042 ve 9160 bağlantı noktalarından Cassandra veri deposuna bağlanıp bağlanamadığını kontrol edin.

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

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

Örneğin, OAuth politikaları içinrefresh_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şkilendirilmişse bu durum, Cassandra'dan yüksek miktarda okuma yapılmasına neden olabilir. 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. Edge Public Cloud'daysanız Apigee Edge Destek Ekibi ile iletişime geçin.

  1. Beta Monitoring kontrol panelini yüklediyseniz Cassandra kontrol paneline bakın ve sorunun yaşandığı döneme ait "Okuma İstekleri" grafiğini inceleyin. Ayrıca "Okuma İsteği Gecikmeleri" grafiğini de inceleyin.
  2. Okuma isteklerini ve okuma gecikmelerini kontrol etmek için kullanabileceğiniz alternatif araç nodetool cfstats komutudur. Bu komutu kullanmayla ilgili daha fazla bilgi edinmek için Cassandra belgelerine 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. Edge Public Cloud'daysanız Apigee Edge Destek Ekibi ile iletişime geçin.

  1. Cassandra performansı normale döndüğünde dağıtımı tekrar deneyin. Cassandra halkasının tamamının normal olduğundan emin olun.
  2. (İsteğe bağlı) Bağlantının kurulduğundan emin olmak için Mesaj İşleyicileri'nde tekrarlı bir yeniden başlatma işlemi gerçekleştirin.
  3. Uzun vadeli bir çözüm için Cassandra veri deposunda daha yüksek okumalara katkı sağlayabilecek API trafik kalıplarını inceleyin. 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ı uygun şekilde artırın.

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

Cassandra'da API proxy paketlerinin boyutu 15 MB ile sınırlandırılmıştır. API proxy paketinin boyutu 15 MB'tan büyükse API proxy'sini dağıtmaya çalıştığınızda "Datastore'a erişilirken hata oluştu" mesajı gösterilir.

Teşhis

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

  1. Mesaj İşleyici günlüklerini (/opt/apigee/var/log/edge-message-processor/logs/system.log) kontrol edin ve ilgili API Proxy'sinin dağıtımı sırasında hata oluşup oluşmadığına bakın.
  2. Aşağıdaki şekilde gösterilene benzer bir hata görüyorsanız dağıtım hatası, API proxy paketi boyutunun 15 MB'tan büyük olmasından kaynaklanır.
    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 olur. Bu sorunu çözmek için aşağıdaki çözümleri kullanın:

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

  1. NodeJS Komut Dosyası dosyaları ve modülleri, JavaScript dosyaları, JAR dosyaları gibi kaynak dosyalarından herhangi birini ortam veya kuruluş düzeyine taşıyın. Kaynak dosyalar hakkında daha fazla bilgi için Edge dokümanlarına bakın.
  2. API proxy'sini dağıtıp hatanın düzelip düzelmediğini kontrol edin.

Sorun devam ederse veya herhangi bir nedenle kaynak dosyalarını ortam ya da kuruluş düzeyine taşıyamıyorsanız 2. çözümü uygulayın.

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. Edge Public Cloud'daysanız Apigee Edge Destek Ekibi ile iletişime geçin.

Edge'de izin verilen API proxy paketinin maksimum boyutunu kontrol eden Cassandra mülkü ikinci el çerçeve taşıma boyutunun boyutunu artırmak için şu adımları uygulayın:

  1. Mevcut değilse şu dosyayı oluşturun:
    /opt/apigee/customer/application/cassandra.properties
    
  2. Aşağıdaki satırı dosyaya ekleyerek <size> kısmını büyük paket için gereken boyut ayarıyla değiştirin:
    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 ile 3 arasındaki adımları tekrarlayın.

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