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.
Terapkan bagan helm pada node pekerja AWS m5a.large.
API-M versi 3.2.0
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)
Haruskah kita menerapkan ini https://github.com/wso2/product-apim/issues/8908?
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.