Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi
Apigee X. info
Gejala
Penerapan revisi proxy API melalui panggilan API pengelolaan Edge atau UI Edge gagal dengan error
"Error while accessing datastore".
Pesan Error
Error in deployment for environment qa. The revision is deployed, but traffic cannot flow. Error while accessing datastore;Please retry later
Kemungkinan Penyebab
Penyebab umum masalah ini adalah:
-
Cause Detail Untuk Masalah Konektivitas Jaringan antara Message Processor dan Cassandra Kegagalan komunikasi antara Message Processor dan Cassandra karena masalah konektivitas jaringan atau aturan firewall. Pengguna Edge Private Cloud Error deployment karena Cassandra dimulai ulang Node Cassandra tidak tersedia karena dimulai ulang sebagai bagian dari pemeliharaan rutin. Pengguna Edge Private Cloud Lonjakan latensi permintaan baca di Cassandra Jika node Cassandra melakukan sejumlah besar pembacaan serentak, node tersebut mungkin merespons dengan lambat karena lonjakan latensi permintaan baca. Pengguna Edge Private Cloud Paket Proxy API lebih besar dari 15 MB Cassandra telah dikonfigurasi agar tidak mengizinkan paket proxy API yang berukuran lebih dari 15 MB. Pengguna Edge Private Cloud Masalah Konektivitas Jaringan antara Pemroses Pesan dan Cassandra
Diagnosis
Catatan: Hanya pengguna Edge Private Cloud yang dapat melakukan langkah-langkah berikut. Jika Anda menggunakan Edge Public Cloud, hubungi Dukungan Apigee Edge.
- Batalkan deployment dan deploy ulang proxy API. Jika ada masalah konektivitas sementara
antara Message Processor dan Cassandra, error mungkin akan hilang.
PERINGATAN: Jangan batalkan deployment jika error terlihat di lingkungan Produksi.
- Jika masalah berlanjut, jalankan panggilan API pengelolaan di bawah untuk memeriksa
status deployment dan periksa apakah ada error pada komponen:
curl -u sysadmin@email.com https://management:8080/v1/o/<org>/apis/<api>/deployments
Contoh output status deployment yang menampilkan Error saat mengakses datastore di salah satu Prosesor Pesan
{ "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" }
- Mulai ulang Pemroses Pesan yang menampilkan error deployment. Jika ada masalah jaringan sementara, error akan hilang:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Ulangi langkah #2 untuk melihat apakah deployment berhasil di Message Processor yang dimulai ulang. Jika tidak ada error yang ditemukan, berarti masalah telah teratasi.
- Periksa apakah pemroses pesan dapat terhubung ke setiap node Cassandra di port 9042
dan 9160:
- Jika telnet tersedia, gunakan telnet:
telnet <Cassandra_IP> 9042 telnet <Cassandra_IP> 9160
- Jika telnet tidak tersedia, gunakan netcat untuk memeriksa konektivitas sebagai berikut:
nc -vz <Cassandra_IP> 9042 nc -vz <Cassandra_IP> 9160
- Jika Anda mendapatkan respons "Connection Refused" atau "Connection timed out", hubungi tim operasi jaringan Anda.
- Jika telnet tersedia, gunakan telnet:
- Jika masalah berlanjut, periksa apakah setiap node Cassandra memproses di
port 9042 dan port 9160:
netstat -an | grep LISTEN | grep 9042 netstat -an | grep LISTEN | grep 9160
- Jika node Cassandra tidak memproses di port 9042 atau 9160, mulai ulang
node Cassandra tertentu:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- Jika masalah berlanjut, hubungi tim operasi jaringan Anda.
- Batalkan deployment dan deploy ulang proxy API. Jika ada masalah konektivitas sementara
antara Message Processor dan Cassandra, error mungkin akan hilang.
Resolusi
Bekerja samalah dengan tim operasi jaringan Anda dan perbaiki masalah konektivitas jaringan antara Message Processor dan Cassandra.
Error deployment karena Cassandra dimulai ulang
Node Cassandra biasanya dimulai ulang secara berkala sebagai bagian dari pemeliharaan rutin. Jika proxy API di-deploy selama pekerjaan pemeliharaan Cassandra, deployment akan gagal karena datastore Cassandra tidak dapat diakses.
Catatan: Hanya pengguna Edge Private Cloud yang dapat melakukan langkah-langkah berikut. Jika Anda menggunakan Edge Public Cloud, hubungi Dukungan Apigee Edge.
Diagnosis
- Periksa apakah node Cassandra dimulai ulang selama waktu deployment.Hal ini dapat
dilakukan dengan memeriksa log Cassandra atau log waktu mulai terbaru dari node Cassandra:
grep"shutdown"/opt/apigee/var/log/apigee-cassandra/system.log
Resolusi
- Pastikan Cassandra sudah aktif dan berjalan.
- Periksa apakah Pemroses Pesan dapat terhubung ke datastore Cassandra di port 9042 dan 9160.
Lonjakan latensi permintaan baca di Cassandra
Jumlah pembacaan yang tinggi di Cassandra bergantung pada kasus penggunaan dan pola traffic individual pada proxy yang berisi kebijakan yang memerlukan akses baca dari Cassandra.
Misalnya, jika panggilan GET ke jenis pemberian refresh_token dipanggil untuk kebijakan OAuth, dan refresh token dikaitkan dengan banyak token akses, maka hal ini dapat menyebabkan jumlah bacaan yang tinggi dari Cassandra. Hal ini dapat menyebabkan peningkatan latensi permintaan baca di Cassandra.
Diagnosis
Catatan: Hanya pengguna Edge Private Cloud yang dapat melakukan langkah-langkah berikut. Jika Anda menggunakan Edge Public Cloud, hubungi Dukungan Apigee Edge.

- Jika Anda telah menginstal dasbor Beta Monitoring, lihat dasbor Cassandra, dan tinjau diagram "Permintaan Baca" untuk periode masalah. Tinjau juga diagram untuk "Latensi Permintaan Baca".
- Alat alternatif untuk memeriksa permintaan baca dan latensi baca adalah perintah
nodetool cfstats. Lihat dokumentasi Cassandra untuk mendapatkan detail selengkapnya tentang penggunaan perintah ini.
Resolusi
Catatan: Hanya pengguna Edge Private Cloud yang dapat melakukan langkah-langkah berikut. Jika Anda menggunakan Edge Public Cloud, hubungi Dukungan Apigee Edge.
- Coba deployment lagi setelah performa Cassandra kembali normal. Pastikan seluruh ring Cassandra normal.
- (Opsional) Lakukan rolling restart pada Pemroses Pesan untuk memastikan konektivitas telah dibuat.
- Untuk solusi jangka panjang, tinjau pola traffic API yang mungkin berkontribusi pada pembacaan yang lebih tinggi di datastore Cassandra. Hubungi Dukungan Apigee Edge untuk mendapatkan bantuan dalam memecahkan masalah ini.
- Jika node Cassandra yang ada tidak memadai untuk menangani traffic masuk, maka tingkatkan kapasitas hardware atau jumlah node penyimpanan data Cassandra dengan tepat.
API Paket Proxy lebih besar dari 15 MB
Ukuran paket proxy API dibatasi hingga 15 MB di Cassandra. Jika ukuran paket proxy API lebih besar dari 15 MB, Anda akan melihat "Error saat mengakses datastore" saat mencoba men-deploy proxy API.
Diagnosis
Catatan: Hanya pengguna Edge Private Cloud yang dapat melakukan langkah-langkah berikut. Jika Anda menggunakan Edge Public Cloud, hubungi Dukungan Apigee Edge.
- Periksa log Message Processor
(
/opt/apigee/var/log/edge-message-processor/logs/system.log) dan lihat apakah ada error yang terjadi selama deployment Proxy API tertentu. - Jika Anda melihat error yang mirip dengan yang ditampilkan pada gambar di bawah, maka error deployment
terjadi karena ukuran paket proxy API > 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>
Resolusi
Paket proxy API akan berukuran besar jika ada terlalu banyak file resource. Gunakan solusi berikut untuk mengatasi masalah ini:
Solusi #1: Pindahkan file resource ke level Lingkungan atau Organisasi
- Pindahkan file resource, seperti file dan modul Skrip NodeJS, file JavaScript, file JAR ke tingkat lingkungan atau organisasi. Untuk mengetahui informasi selengkapnya tentang file resource, lihat dokumentasi Edge.
- Deploy proxy API dan lihat apakah errornya hilang.
Jika masalah berlanjut atau Anda tidak dapat memindahkan file resource ke level lingkungan atau organisasi karena alasan tertentu, terapkan solusi #2.
Solusi #2: Tingkatkan ukuran paket proxy API di Cassandra
Catatan: Hanya pengguna Edge Private Cloud yang dapat melakukan langkah-langkah berikut. Jika Anda menggunakan Edge Public Cloud, hubungi Dukungan Apigee Edge.
Ikuti langkah-langkah berikut untuk menambah ukuran properti Cassandra thrift frame transport size, yang mengontrol ukuran maksimum paket proxy API yang diizinkan di Edge:
- Buat file berikut, jika belum ada:
/opt/apigee/customer/application/cassandra.properties
- Tambahkan baris berikut ke file, dengan mengganti <size> dengan setelan ukuran yang diperlukan untuk
paket besar:
conf_cassandra_thrift_framed_transport_size_in_mb=<size>
- Mulai ulang Cassandra:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Ulangi langkah #1 hingga #3 di semua node Cassandra dalam cluster.
Jika masalah berlanjut, hubungi Dukungan Apigee Edge.