Topik ini menjelaskan kemungkinan penyebab kesalahan yang mungkin terjadi saat menggunakan Performance Testing Service (PTS) dan memberikan solusi.
Pesan Kesalahan Umum
class java.net.ConnectException:null
Permintaan gagal atau ditolak oleh server backend saat mencoba membangun koneksi TCP. Periksa status kesehatan server backend dan evaluasi apakah ada hambatan pada koneksi jaringan.
org.apache.http.ConnectionClosedException:Koneksi ditutup
Server secara abnormal mengakhiri koneksi.
org.apache.hc.core5.http.ConnectionClosedException:Koneksi telah ditutup
Permintaan dilakukan pada koneksi yang telah diakhiri oleh server. Periksa apakah bandwidth di lapisan gateway dan koneksi jaringan mengalami hambatan.
java.io.IOException:Koneksi diatur ulang oleh peer
Server backend mereset koneksi. Jika Server Load Balancer (SLB) digunakan, periksa pengaturan SLB.
org.apache.http.ConnectionClosedException:Koneksi ditutup secara tidak terduga
Koneksi telah diakhiri sebelum data diterima. Server mungkin gagal merespons dalam waktu yang diharapkan, atau debugging atau uji stres dihentikan lebih awal dari yang diharapkan.
java.lang.RuntimeException:java.net.UnknownHostException
Nama domain tidak dapat diselesaikan. Periksa apakah nama domain telah didaftarkan dengan benar dan dapat diselesaikan, serta apakah nama domain yang belum terdaftar telah diikat.
org.apache.http.client.CircularRedirectException
Permintaan dialihkan dalam loop (A -> B -> C -> A) atau lebih dari 10 kali (A1 -> A2 -> A3... -> A10 -> A11). Dalam situasi ini, disarankan untuk menonaktifkan pengalihan 302, menjalankan uji stres kembali, dan memeriksa informasi permintaan asli. Anda juga dapat menggunakan aliran air terjun waktu untuk menganalisis jalur pengalihan spesifik.
Nonaktifkan pengalihan 302: Di halaman Scenario Settings, matikan sakelar **Izinkan Pengalihan 302**.

Lihat jalur pengalihan spesifik dalam aliran air terjun waktu: Anda dapat melihat detail aliran air terjun waktu di log sampling laporan uji stres. Untuk informasi lebih lanjut, lihat Analisis hasil uji stres.
org.apache.hc.core5.http.ProtocolException:Header 'key: value' ilegal untuk pesan HTTP/2
Header yang tidak didukung oleh protokol HTTP/2 dikonfigurasi dalam skenario di mana server lebih memilih menggunakan protokol HTTP/2. Hapus header yang sesuai dan coba lagi. HTTP/2 tidak mendukung header berikut: Connection, Keep-Alive, Proxy-Connection, Transfer-Encoding, Host, dan Upgrade.
java.nio.channels.CancelledKeyException:null
Server backend mengakhiri koneksi di bawah protokol HTTP/2. Lakukan pemecahan masalah pada server backend.
java.util.concurrent.TimeoutException:null
Koneksi mengalami timeout. Permintaan gagal atau ditolak oleh ujung yang diuji saat mencoba membangun koneksi TCP. Gunakan aliran air terjun waktu untuk memeriksa apakah fase koneksi memerlukan waktu lama. Periksa status kesehatan server backend dan evaluasi apakah ada hambatan pada koneksi jaringan.
org.apache.hc.core5.http2.H2StreamResetException:Timeout karena inaktivitas (5000 MILIDETIK) * class
Respon dari server backend mengalami timeout. Periode timeout permintaan default adalah lima detik. Anda dapat memperpanjang periode timeout permintaan di bagian Advanced Settings pada halaman Buat Skenario.
java.net.SocketTimeoutException:null
Permintaan habis waktu saat menunggu respons atau saat membaca data (idle). Periksa apakah server sehat, apakah periode timeout API untuk uji stres sesuai, dan apakah server memiliki hambatan kinerja.
java.lang.RuntimeException: Tidak dapat menemukan kelas TestPlan!
Skrip JMeter tidak kompatibel dengan versi JMeter yang didukung oleh PTS. Gunakan JMeter V5.0 untuk mengedit skrip.
java.lang.SecurityException: informasi penandatanganan kelas "xxx" tidak cocok dengan informasi penandatanganan kelas lain dalam paket yang sama
Versi ApacheJMeter_core atau ApacheJMeter_java dependensi Java sampler dalam skrip JMeter tidak kompatibel dengan JMeter V5.0 yang didukung oleh PTS. Gunakan JMeter V5.0 untuk mengemas ulang dependensi menjadi paket JAR dan coba lagi.
Mencoba menyelesaikan metode: xxx() pada variabel atau nama kelas yang tidak terdefinisi:
Kelas tempat BeanShell sampler bergantung dalam skrip JMeter tidak diunggah. Unggah paket JAR yang relevan dan coba lagi.
class java.lang.IllegalArgumentException:uri yang dilarang, host uri harus cocok dengan pola cidr vpc 10.0.0.0/8, 172.16.0.0/12 atau 192.168.0.0/16
Anda menggunakan VPC untuk uji stres, tetapi nama domain dalam URL uji diselesaikan ke alamat IP non-internal. Dalam hal ini, Anda harus menggunakan alamat IP internal untuk uji stres atau masuk ke Konsol PTS untuk mengikat nama domain ke alamat IP internal.
Kode Kesalahan Umum
403 (Forbidden)
Kode kesalahan 403 dikembalikan karena Anda tidak memiliki akses ke API dan server menerima permintaan tetapi menolak untuk memberikan layanan.
Pilih skenario uji stres Anda, lalu klik Edit di kolom Actions. Pada tab Header Definition di halaman Scenario Settings, tambahkan UA umum seperti yang ditunjukkan pada gambar berikut.
Key:User-AgentValue:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36
Klik Debug. Di halaman Request Details, periksa apakah permintaan berjalan normal. Jika permintaan normal setelah UA dimodifikasi, kesalahan disebabkan oleh verifikasi UA. Dalam situasi ini, Anda dapat melanjutkan uji stres dengan memodifikasi UA.
Kemungkinan Penyebab 3
Permintaan diblokir oleh Web Application Firewall (WAF). Kesalahan 403 hanya dikembalikan dalam kasus yang jarang terjadi karena alasan ini.
Solusi
Jika daftar putih Web Application Firewall (WAF) diperlukan, Anda harus mengonfigurasi aturan yang mengizinkan lalu lintas PTS. Untuk informasi lebih lanjut, lihat Apa yang harus saya lakukan jika lalu lintas uji stres tidak dapat mengakses aplikasi web saya karena kebijakan keamanan?
Kemungkinan Penyebab 4
Nama domain untuk uji stres belum didaftarkan, atau nama domain tersebut diarahkan ke nama domain lain yang juga belum didaftarkan.
Solusi: Periksa status pendaftaran nama domain berdasarkan hasil yang diberikan. Jika muncul kesalahan 403 dan informasi HTML berikut ditampilkan, nama domain belum terdaftar. Dalam situasi ini, Anda harus mengajukan pendaftaran ICP untuk nama domain terlebih dahulu.
<html> <head> <meta http-equiv="Content-Type" content="textml;charset=UTF-8" /> <style>body{background-color:#FFFFFF}</style> <title>TestPage184</title> <script language="javascript" type="text/javascript"> window.onload = function () { document.getElementById("mainFrame").src= "http://****.aliyun.com/alww.html"; } </script> </head> <body> <iframe style="width:860px; height:500px;position:absolute;margin-left:-430px;margin-top:-250px;top:50%;left:50%;" id="mainFrame" src="" frameborder="0" scrolling="no"></iframe> </body> </html>
Kemungkinan Penyebab 1
Permintaan gagal diterima karena pengaturan autentikasi pada backend server Anda. Dalam hal ini, kesalahan berasal dari layanan backend.
Solusi: Periksa mekanisme autentikasi layanan.
Kemungkinan Penyebab 2
Gateway server melakukan verifikasi ketat terhadap User-Agent (UA) pada header permintaan. Jika UA tidak valid, gateway server akan mengembalikan pesan kesalahan yang menunjukkan bahwa Anda tidak memiliki izin yang diperlukan. UA default dalam permintaan yang diinisiasi oleh PTS berisi karakter khusus, sehingga beberapa layanan dapat membedakan antara lalu lintas statistik dan aturan throttling.
Solusi
Masuk ke Konsol PTS dan pilih .
405 (Method Not Allowed)
Kesalahan 405 dapat terjadi karena alasan berikut:
Pengalihan 302 terjadi pada permintaan POST, yang mengubah metode permintaan. Dalam situasi ini, server mungkin tidak dapat mengenali metode permintaan, sehingga mengembalikan kesalahan 405.
Server permintaan langsung memverifikasi metode, dan header respons yang sesuai berisi informasi
Allow=GET.Saat menggunakan instance SLB atau server web untuk meneruskan permintaan, metode permintaan diubah tetapi server backend tidak dapat mengenali modifikasi tersebut.
406 (Not Acceptable)
Kesalahan klien terjadi. Entitas respons tidak dapat dihasilkan karena konten sumber daya yang diminta tidak dapat memenuhi kondisi di header permintaan.
Penyebab Kemungkinan
Kesalahan 406 terjadi saat debugging karena bidang Accept yang dikonfigurasi di tab Header Definition pada permintaan tidak valid.
Accept: Jenis data yang diharapkan diterima oleh pengirim. Dalam contoh ini, pengirimnya adalah PTS.Content-Type: jenis data yang dikirim oleh pengirim (PTS). KonfigurasiContent-Typepada tab Body Definition di halaman Scenario Settings disinkronkan secara otomatis ke tab Header Definition. Jika nilaiAcceptyang dikonfigurasikan pada tab Header Definition tidak sesuai dengan isi yang disepakati, kesalahan 406 akan dikembalikan.

Solusi
Pastikan server dapat memverifikasi tipe Accept. Anda dapat mengonfirmasi tipe Accept yang dapat divalidasi server dengan menyetel nilai Value berbeda untuk setiap tipe Accept. Tabel berikut menjelaskan format header Accept dan urutan pencocokannya.
Tabel 1. Jenis Format Header Accept
Jenis Format | Jenis Format |
| Format HTML |
| Format teks biasa |
| Format XML |
| Format gambar GIF |
| Format gambar JPG |
| Format gambar PNG |
| Format XHTML |
| Format data XML |
| Format agregasi Atom XML |
| Format data JSON |
| Format PDF |
| Format dokumen Word |
| Data aliran biner, seperti unduhan file umum. |
| encType default dalam |
Saat header Accept berikut dikonfigurasikan: | Produces dicocokkan dalam urutan berikut:
|
Saat header Accept berikut dikonfigurasikan: | Produces dicocokkan dalam urutan berikut:
Catatan Parameter application/xml adalah faktor kualitas dari tipe media. Angka yang lebih besar menunjukkan prioritas yang lebih tinggi (dari 0 hingga 1). |
Saat header Accept berikut dikonfigurasikan: | Produces dicocokkan dalam urutan berikut:
|
503 (Service Unavailable)
Penyebab Kemungkinan 1
Server backend menolak menerima permintaan karena kelebihan beban lalu lintas.
Solusi: Periksa apakah log kesalahan yang relevan ada di server backend.
Penyebab Kemungkinan 2
Banyak kesalahan 503 muncul dalam detail log sampling PTS, namun tidak ada informasi relevan yang ditemukan di server backend. Jika kondisi berikut terpenuhi dalam skenario uji stres Anda, kesalahan tersebut dikembalikan oleh SLB.
API HTTP atau HTTPS digunakan.
Titik masuk lingkungan uji stres adalah instance SLB (instance SLB yang menghadap internet atau instance SLB akses internal).
Layanan backend tidak mengembalikan kesalahan 503, dan tidak ditemukan catatan yang relevan.
Pesan kesalahan 503 memiliki konten berikut:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html> <head><title>503 Service Temporarily Unavailable</title></head> <body bgcolor="white"> <h1>503 Service Temporarily Unavailable</h1> <p>Server sementara tidak dapat melayani permintaan Anda karena downtime pemeliharaan atau masalah kapasitas. Silakan coba lagi nanti.</body> </html>
Alamat IP sumber yang memulai uji stres mungkin dibatasi. Satu alamat IP dapat memicu throttling pada single-proxy cluster Server Load Balancer (SLB). Selain itu, koneksi klien permintaan secara default diatur dalam keadaan terhubung panjang. Jika jumlah alamat IP terlalu kecil, SLB tidak dapat sepenuhnya menyeimbangkan beban.
CatatanSecara default, koneksi panjang dibuat antara PTS dan server Anda.
Solusi
Gunakan fitur ekstensi IP yang disediakan oleh PTS. Untuk informasi lebih lanjut, lihat Mulai skenario.
Tetapkan jumlah maksimum pengguna virtual atau permintaan per detik (RPS) pada nilai yang lebih tinggi. Untuk informasi lebih lanjut, lihat Konfigurasikan model beban dan level.
Di halaman Scenario Settings, atur
Connection:closeuntuk permintaan pada tab Header Definition. Setelah konfigurasi selesai, API baru akan menggunakan pengaturan tersebut sebagai default. Anda dapat menyesuaikan konfigurasi sesuai kebutuhan bisnis Anda.
504 (BadGateway Timeout)
Penyebab Kemungkinan
Respon dari server yang terpasang ke gateway habis waktu.
Solusi
Periksa apakah server backend memberikan layanan sesuai harapan. Selanjutnya, Anda dapat memperpanjang periode timeout di gateway atau memperpanjang timeout permintaan generator beban pada bagian Advanced Settings halaman Buat Skenario.