Product-apim: [3.2.0] CPU Tinggi ketika satu permintaan mencapai Gateway di Kubernetes

Dibuat pada 6 Jan 2021  ·  8Komentar  ·  Sumber: wso2/product-apim

Keterangan:

CPU tinggi ketika satu permintaan menyentuh Gateway.

Dokumentasi pemecahan masalah yang diikuti dan temuan seperti ini:

  • hasil penggunaan:
    %CPU CPU NI S WAKTU PID TID
    ...
    78,1 - 0 R 00:17:27 167 356
    77,9 - 0 R 00:17:25 167 357
    ...

  • hasil dump sesuai dengan id utas:

"HTTPS-Listener I/O dispatcher-1" #190 prio=5 os_prio=0 cpu=1043696.51ms elapsed=1336.89s tid=0x00007fdc54094000 nid=0x164 runnable  [0x00007fdc1b606000]
   java.lang.Thread.State: RUNNABLE
        at sun.nio.ch.EPoll.wait([email protected]/Native Method)
        at sun.nio.ch.EPollSelectorImpl.doSelect([email protected]/EPollSelectorImpl.java:120)
        at sun.nio.ch.SelectorImpl.lockAndDoSelect([email protected]/SelectorImpl.java:124)
        - locked <0x00000000eafef8d8> (a sun.nio.ch.Util$2)
        - locked <0x00000000eafef778> (a sun.nio.ch.EPollSelectorImpl)
        at sun.nio.ch.SelectorImpl.select([email protected]/SelectorImpl.java:136)
        at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:256)
        at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:105)
        at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:586)
        at java.lang.Thread.run([email protected]/Thread.java:834)

"HTTPS-Listener I/O dispatcher-2" #191 prio=5 os_prio=0 cpu=1041420.55ms elapsed=1336.89s tid=0x00007fdc5409d000 nid=0x165 runnable  [0x00007fdc1b505000]
   java.lang.Thread.State: RUNNABLE
        at sun.nio.ch.EPoll.wait([email protected]/Native Method)
        at sun.nio.ch.EPollSelectorImpl.doSelect([email protected]/EPollSelectorImpl.java:120)
        at sun.nio.ch.SelectorImpl.lockAndDoSelect([email protected]/SelectorImpl.java:124)
        - locked <0x00000000eaff0950> (a sun.nio.ch.Util$2)
        - locked <0x00000000eaff08f8> (a sun.nio.ch.EPollSelectorImpl)
        at sun.nio.ch.SelectorImpl.select([email protected]/SelectorImpl.java:136)
        at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:256)
        at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:105)
        at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:586)
        at java.lang.Thread.run([email protected]/Thread.java:834)

Dua utas ini menghabiskan banyak sumber daya dan saya tidak dapat menemukan alasan spesifik.

Langkah-langkah untuk mereproduksi:

Terapkan bagan helm pada node pekerja AWS m5a.large.

Versi Produk yang Terpengaruh:

API-M versi 3.2.0

Detail lingkungan (dengan versi):

  • OS: AWS Linux
  • Env (Docker/K8s): K8s 1.18

Bidang Opsional

Masalah Terkait:

Label yang Disarankan:

Penerima Tugas yang Disarankan:

PrioritNormal TypBug

Semua 8 komentar

Hai @okhuz , dapatkah Anda memberi tahu saya jika Anda telah melakukan perubahan sumber daya di bagan heml. Saya yakin Anda menggunakan diagram kemudi WSO2. Selanjutnya, dapatkah Anda memberi tahu saya pola penerapan yang Anda gunakan dan berapa banyak node yang ada di cluster (m5a.large). Menurut diagram kemudi WSO2, sebuah pod membutuhkan CPU minimal 2000m (2 CPU). Karena m5a.large node memiliki 2 vCPU, saya kira mungkin itu (hanya kemungkinan). Bisakah Anda memberi tahu saya skenario spesifik apa pun yang Anda coba ketika Anda mengamati penggunaan CPU yang tinggi ini? Seperti pada throughput yang lebih tinggi, logika mediasi disertakan, dll.

Hai @dinusha92 , kami memiliki node penskalaan otomatis di AWS EKS, antara 3 dan 6 dan dalam bagan batasnya adalah 2000m, saya berasumsi bahwa itu akan berfungsi sebagaimana adanya. Saya telah meningkatkan CPU permintaan tetapi tidak berdampak apa pun. Apakah kita membutuhkan instance yang lebih besar?

Bisakah Anda memeriksa penggunaan sumber daya dari node dan pod menggunakan kubectl top node <node name> dan kubectl top pod <pod name> . (Perintah terkait Pod harus dijalankan dengan namespace)

Gateway mengkonsumsi semua sumber daya dalam satu node. Kami sedang meningkatkan ukuran instans kami untuk menguji masalah ini.

NAME     CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
xxxxxxx    65m             1%        742Mi                  10%       
xxxxxxx    240m           6%        3065Mi                44%       
xxxxxxx    259m           6%        3145Mi                45%       
xxxxxxx    2198m         56%      3660Mi                53%       
xxxxxxx    190m           4%        2762Mi                40% 

NAME                                                              CPU(cores)   MEMORY(bytes) 
wso2am-pattern-2-am-gateway-deployment-7c5dc7dc67-d68tr           1956m           958Mi           
wso2am-pattern-2-am-gateway-deployment-7c5dc7dc67-jczjb            1959m           958Mi  

Masih belum berhasil. Seharusnya konsumsi CPU sangat kecil saat idle, benar?

Bisakah Anda memberi tahu saya skenario spesifik apa pun yang Anda coba ketika Anda mengamati penggunaan CPU yang tinggi ini?

Kami memiliki beberapa API di manajer API tetapi ini terjadi langsung setelah Gateway menerima permintaan apa pun. Seperti jika saya masuk gateway.xxx.com atau gateway.xxx.com/services/Version, tepat setelah itu CPU berputar untuk membatasi.

Seperti yang disebutkan @pubudu538 , kami telah memperbaiki masalah kinerja. Jika Anda memiliki langganan WSO2, Anda dapat menggunakan WUM untuk mendapatkan perbaikan bug. Jika tidak, Anda harus menyertakan perbaikan secara manual dan menambalnya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

YannickB picture YannickB  ·  25Komentar

kharsha64 picture kharsha64  ·  8Komentar

HiranyaKavishani picture HiranyaKavishani  ·  5Komentar

Thangthanh picture Thangthanh  ·  3Komentar

molinab297-unisys picture molinab297-unisys  ·  6Komentar