Kesalahan waktu tunggu

Anda melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Gejala

Deployment revisi proxy API melalui UI Edge atau management API gagal dengan error waktu tunggu habis.

Pesan Error

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

Kemungkinan Penyebab

Penyebab umum masalah ini adalah:

Penyebab Detail Untuk
Masalah Konektivitas Jaringan Kegagalan komunikasi antara Server Pengelolaan dan Pemroses Pesan karena masalah konektivitas jaringan atau aturan firewall. Hanya Pengguna Cloud Pribadi
Paket Proxy API Besar Pemroses Pesan mungkin memerlukan waktu lama untuk diaktifkan jika paket proxy API berukuran besar, sehingga menyebabkan waktu tunggu RPC habis. Pengguna Cloud Pribadi dan Publik

Masalah Konektivitas Jaringan

Catatan: Hanya pengguna Edge Private Cloud yang dapat melakukan langkah-langkah berikut. Jika Anda menggunakan Edge Public Cloud, hubungi Dukungan Apigee Edge.

Diagnosis

  1. Dapatkan status deployment untuk API tertentu yang menampilkan error menggunakan panggilan API pengelolaan berikut:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>

    Contoh output yang menampilkan error:

    { 
                    "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"
                    } 

    Contoh output di atas menunjukkan bahwa error terjadi pada salah satu Pemroses Pesan yang memiliki UUID "ebbc1078-cbde-4a00-a7db-66a3c1b2b748".

  2. Berdasarkan output status deployment untuk proxy API Anda, login ke setiap Pemroses Pesan dengan UUID yang sesuai yang menampilkan error dan lakukan langkah-langkah berikut:
    1. Periksa apakah Pemroses Pesan memproses port 4528:
      netstat -an | grep LISTEN | grep 4528

      Jika Pemroses Pesan tidak memproses port 4528, mulai ulang Pemroses Pesan:

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    2. Periksa kembali status deployment proxy API menggunakan panggilan management API yang ditampilkan di langkah #1 di atas. Jika tidak ada error, berarti masalah telah teratasi.
  3. Jika masalah berlanjut, uji konektivitas dari Server Pengelolaan ke Pemroses Pesan di port 4528 menggunakan langkah-langkah berikut:
    1. Jika telnet tersedia, gunakan telnet:
      telnet <MessageProcessor_IP> 4528
    2. Jika telnet tidak tersedia, gunakan netcat untuk memeriksa konektivitas sebagai berikut:
      nc -vz <MessageProcessor_IP> 4528
    3. Jika Anda mendapatkan respons "Connection Refused" atau "Connection timed out", hubungi tim operasi jaringan Anda.
  4. Uji konektivitas dari Pemroses Pesan ke Server Pengelolaan di port 4526 menggunakan langkah-langkah berikut:
    1. Jika telnet tersedia, gunakan telnet:
      telnet <management-server-IP> 4526
    2. Jika telnet tidak tersedia, gunakan netcat untuk memeriksa konektivitas sebagai berikut:
      nc -vz <management-server-IP> 4526 
    3. Jika Anda mendapatkan respons "Connection Refused" atau "Connection timed out", hubungi tim operasi jaringan Anda.
  5. Bekerja samalah dengan tim operasi jaringan Anda dan lakukan hal berikut:
    1. Pastikan protokol RPC diizinkan di Server Pengelolaan dan Pemroses Pesan.
    2. Hapus batasan firewall atau penyiapan aturan keamanan antara Server Pengelolaan dan Pemroses Pesan untuk mengizinkan konektivitas ke port 4526 di server pengelolaan, dan konektivitas dari Server Pengelolaan ke Pemroses Pesan di port 4528.
  6. Periksa kembali status deployment (lihat langkah #1 di atas). Jika Anda tidak melihat error, berarti error telah teratasi.
  7. Jika masalah berlanjut, periksa apakah ada masalah jaringan di Pemroses Pesan. Jika ada masalah jaringan, memulai ulang Pemroses Pesan tertentu yang menampilkan error waktu tunggu habis (sesuai output status deployment) dapat memperbaiki masalah:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  8. Jika masalah masih berlanjut, periksa log Server Pengelolaan di: (/opt/apigee/var/log/edge-management-server/logs/system.log).

    Contoh Error Waktu Tunggu Habis Panggilan dari Log Server Pengelolaan

    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] 
            

    Jika Anda melihat error serupa seperti yang ditunjukkan dalam contoh di atas, tingkatkan waktu tunggu RPC di Server Pengelolaan sehingga jika ada perlambatan jaringan, Server Pengelolaan akan memiliki waktu untuk terhubung ke Pemroses Pesan.

Resolusi

Catatan: Hanya pengguna Edge Private Cloud yang dapat melakukan langkah-langkah berikut. Jika Anda menggunakan Edge Public Cloud, hubungi Dukungan Apigee Edge.

  1. Lakukan langkah-langkah berikut untuk meningkatkan waktu tunggu RPC:
    1. Buat file /opt/apigee/customer/application/management-server.properties di mesin Server Pengelolaan, jika belum ada.
    2. Tambahkan baris berikut ke dalam file ini:
      conf_cluster_rpc.connect.timeout=<time in seconds>

      Nilai waktu tunggu RPC default adalah 10 dan sebaiknya ditingkatkan menjadi 40 detik. Tetapkan sebagai berikut:

      conf_cluster_rpc.connect.timeout=40
    3. Pastikan file ini dimiliki oleh apigee:
      chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    4. Mulai ulang Server Pengelolaan:
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    5. Jika Anda memiliki lebih dari satu Server Pengelolaan, ulangi langkah-langkah di atas di semua Server Pengelolaan.
    6. Deploy proxy API di UI Edge atau menggunakan panggilan API pengelolaan Edge. Jika proxy API di-deploy tanpa masalah, berarti masalah telah teratasi.
  2. Jika masalah berlanjut, kumpulkan tcpdump perintah dari Server Pengelolaan dan Pemroses Pesan. Aktifkan perintah tcpdump di setiap server, lalu mulai deployment Proxy API dari UI atau menggunakan management API:
    1. Jalankan perintah tcpdump di bawah dari Server Pengelolaan:
      tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
    2. Jalankan perintah tcpdump di bawah dari Pemroses Pesan:
      tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
    3. Hubungi Dukungan Apigee Edge untuk mendapatkan bantuan dalam menganalisis tcpdump dan memecahkan masalah lebih lanjut.

Paket Proxy API Besar

Diagnosis

  1. Periksa ukuran paket proxy API yang mengalami error deployment.
  2. Jika ukurannya cukup besar (10 MB atau lebih tinggi), kemungkinan besar Pemroses Pesan memerlukan lebih banyak waktu untuk mengaktifkan proxy API.
  3. Jika ukuran paket Proxy API lebih besar dari 15 MB, lanjutkan ke Paket Proxy API lebih besar dari 15 MB.

Resolusi

Catatan: Hanya pengguna Edge Private Cloud yang dapat melakukan langkah-langkah berikut. Jika Anda menggunakan Edge Public Cloud, hubungi Dukungan Apigee Edge.

Tingkatkan waktu tunggu RPC di Server Pengelolaan sehingga Pemroses Pesan memiliki cukup waktu untuk mengaktifkan paket proxy API besar. Lakukan langkah-langkah berikut untuk meningkatkan nilai waktu tunggu RPC:

  1. Buat file /opt/apigee/customer/application/management-server.properties di mesin Server Pengelolaan, jika belum ada.
  2. Tambahkan baris berikut ke dalam file ini:
    conf_cluster_rpc.connect.timeout=<time in seconds>

    Nilai waktu tunggu RPC default adalah 10 dan sebaiknya ditingkatkan menjadi 40 detik. Tetapkan sebagai berikut:

    conf_cluster_rpc.connect.timeout=40
  3. Pastikan file ini dimiliki oleh apigee:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
  4. Mulai ulang Server Pengelolaan:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. Jika Anda memiliki lebih dari satu Server Pengelolaan, ulangi langkah-langkah di atas di semua Server Pengelolaan.

Jika masalah berlanjut, hubungi Dukungan Apigee Edge untuk mendapatkan bantuan lebih lanjut.