All Products
Search
Document Center

Performance Testing:Kesalahan umum dan solusi

Last Updated:Mar 12, 2026

Saat uji stres di Performance Testing Service (PTS) gagal atau menghasilkan respons yang tidak sesuai harapan, kesalahan tersebut berupa pengecualian Java dalam pesan error atau kode status HTTP dalam respons. Bagian berikut mengelompokkan kedua jenis tersebut berdasarkan akar penyebabnya, disertai solusi masing-masing.

Untuk menemukan error Anda, cari pesan error yang tepat atau gulir ke bagian kode status HTTP yang relevan.

Kesalahan koneksi

Kesalahan ini menunjukkan bahwa PTS tidak dapat membangun atau mempertahankan koneksi ke server backend. Mulailah dengan memeriksa kesehatan server dan jalur jaringan antara PTS dan titik akhir target.

class java.net.ConnectException:null

Penyebab: Koneksi TCP ke server target gagal atau ditolak.

Solusi: Periksa kesehatan server backend dan pastikan tidak ada bottleneck jaringan antara PTS dan target.

org.apache.http.ConnectionClosedException:Connection closed

Penyebab: Server menghentikan koneksi secara abnormal.

Solusi: Periksa log server backend untuk mencari error atau kehabisan sumber daya yang dapat menyebabkan pemutusan koneksi mendadak.

org.apache.hc.core5.http.ConnectionClosedException:Connection is closed

Penyebab: PTS mengirim permintaan melalui koneksi yang telah ditutup oleh server.

Solusi: Periksa apakah bandwidth pada lapisan gerbang atau jalur jaringan mengalami bottleneck. Jika server berada di belakang load balancer, pastikan pengaturan timeout koneksi idle antara PTS dan load balancer sudah selaras.

java.io.IOException:Connection reset by peer

Penyebab: Server backend memaksa mereset koneksi.

Solusi: Jika Server Load Balancer (SLB) berada di jalur permintaan, periksa konfigurasi pendengar SLB, terutama pengaturan timeout koneksi dan pemeriksaan kesehatan.

org.apache.http.ConnectionClosedException:Connection closed unexpectedly

Penyebab: Koneksi diputus sebelum PTS menerima respons. Pemicu umum meliputi:

  • Server gagal merespons dalam batas waktu yang diharapkan.

  • Sesi debug atau uji stres dihentikan sebelum respons tiba.

Solusi: Pastikan server mampu menangani permintaan dalam batas timeout yang dikonfigurasi. Jika pengujian sengaja dihentikan, error ini bersifat wajar dan dapat diabaikan.

Kesalahan timeout

Kesalahan ini menunjukkan bahwa permintaan atau koneksi melebihi batas waktu yang diizinkan. Penyebab utama umum meliputi pemrosesan backend yang lambat, konflik sumber daya, atau pengaturan timeout yang terlalu singkat untuk beban kerja tersebut.

java.util.concurrent.TimeoutException:null

Penyebab: Upaya koneksi TCP mengalami timeout. PTS tidak dapat mencapai server target dalam waktu yang dialokasikan.

Solusi:

  1. Gunakan aliran air terjun waktu di detail log pengambilan sampel untuk memeriksa apakah fase koneksi memakan waktu yang tidak biasa. Untuk detailnya, lihat Analisis hasil uji stres.

  2. Periksa kesehatan server backend dan jalur jaringan untuk mengidentifikasi bottleneck.

org.apache.hc.core5.http2.H2StreamResetException:Timeout due to inactivity (5000 MILLISECONDS) * class

Penyebab: Server backend tidak merespons dalam batas waktu permintaan default 5 detik.

Solusi: Perpanjang timeout permintaan di bagian Advanced Settings pada halaman Create Scenario.

java.net.SocketTimeoutException:null

Penyebab: Permintaan mengalami timeout saat menunggu respons atau saat membaca data (idle timeout).

Solusi:

  1. Pastikan server dalam kondisi sehat dan mampu memproses permintaan dalam waktu yang diharapkan.

  2. Periksa apakah API uji stres memiliki pengaturan timeout yang sesuai.

  3. Investigasi server untuk mengidentifikasi bottleneck performa (CPU, memori, I/O).

Kesalahan redirect dan DNS

java.lang.RuntimeException:java.net.UnknownHostException

Penyebab: Nama domain tidak dapat diselesaikan.

Solusi:

  1. Pastikan nama domain telah terdaftar dan dapat diselesaikan dengan benar.

  2. Jika domain tidak terdaftar di DNS publik, bind domain tersebut di PTS sebelum menjalankan pengujian.

org.apache.http.client.CircularRedirectException

Penyebab: Permintaan masuk ke loop redirect (misalnya, A → B → C → A) atau melebihi 10 redirect.

Solusi:

  1. Nonaktifkan redirect 302: Di halaman Scenario Settings, matikan sakelar Allow 302 Redirect.

    Disable 302 redirect

  2. Jalankan kembali uji stres dan periksa permintaan asli untuk mengonfirmasi rantai redirect.

  3. Untuk melihat jalur redirect secara tepat, buka detail log pengambilan sampel di laporan uji stres dan periksa aliran air terjun waktu. Untuk detailnya, lihat Analisis hasil uji stres.

Kesalahan protokol HTTP/2

org.apache.hc.core5.http.ProtocolException:Header 'key: value' is illegal for HTTP/2 messages

Penyebab: Skenario mencakup header yang tidak diizinkan oleh HTTP/2. Header berikut dilarang dalam HTTP/2: Connection, Keep-Alive, Proxy-Connection, Transfer-Encoding, Host, dan Upgrade.

Solusi: Hapus header yang tidak didukung dari konfigurasi skenario dan jalankan kembali pengujian.

java.nio.channels.CancelledKeyException:null

Penyebab: Server backend menghentikan koneksi di bawah protokol HTTP/2.

Solusi: Investigasi log server backend untuk masalah spesifik HTTP/2 seperti stream reset atau frame GOAWAY.

Kesalahan skrip JMeter

Kesalahan ini terjadi ketika skrip JMeter tidak kompatibel dengan JMeter V5.0, versi yang didukung oleh PTS.

java.lang.RuntimeException: Could not find the TestPlan class!

Penyebab: Skrip JMeter dibuat dengan versi yang tidak kompatibel dengan JMeter V5.0.

Solusi: Buka dan simpan ulang skrip tersebut di JMeter V5.0, lalu unggah kembali ke PTS.

java.lang.SecurityException: class "xxx"'s signer information does not match signer information of other classes in the same package

Penyebab: Dependensi Java sampler (ApacheJMeter_core atau ApacheJMeter_java) dalam skrip dibangun menggunakan versi JMeter selain V5.0.

Solusi: Pak ulang dependensi JAR menggunakan library JMeter V5.0 dan unggah paket yang telah diperbarui.

Attempt to resolve method: xxx() on undefined variable or class name:

Penyebab: Sampler BeanShell mereferensikan kelas yang tidak diunggah bersama skrip.

Solusi: Unggah paket JAR yang hilang berisi kelas yang diperlukan dan jalankan kembali pengujian.

Kesalahan jaringan VPC

class java.lang.IllegalArgumentException:forbidden uri, uri host must match vpc cidr pattern 10.0.0.0/8, 172.16.0.0/12 or 192.168.0.0/16

Penyebab: Uji stres dikonfigurasi untuk menggunakan VPC, tetapi nama domain dalam URL pengujian diselesaikan ke Alamat IP publik, bukan alamat IP internal. Uji stres VPC mengharuskan IP target berada dalam rentang CIDR privat (10.0.0.0/8, 172.16.0.0/12, atau 192.168.0.0/16).

Solusi: Salah satu pendekatan berikut dapat digunakan:

  • Gunakan alamat IP internal secara langsung dalam URL pengujian.

  • Masuk ke PTS console dan bind nama domain ke alamat IP internal.

Kode error HTTP

403 (Forbidden)

Respons 403 berarti server menerima permintaan tetapi menolak mengotorisasi permintaan tersebut. Penyebab umum dalam uji stres PTS:

Penolakan otentikasi backend

Penyebab: Mekanisme otentikasi server menolak permintaan, misalnya karena token tidak ada atau tidak valid.

Solusi: Periksa pengaturan otentikasi layanan backend dan pastikan permintaan uji stres menyertakan kredensial yang valid.

Kegagalan validasi User-Agent

Penyebab: Gerbang server memvalidasi header User-Agent (UA). UA default yang dikirim PTS berisi karakter khusus agar beberapa layanan dapat membedakan antara trafik statistik dan aturan pembatasan kecepatan. Beberapa gerbang menolak UA non-standar ini.

Solusi:

  1. Di PTS console, buka Performance Test > Scenarios.

  2. Pilih skenario dan klik Edit di kolom Actions.

  3. Di tab Header Definition pada halaman Scenario Settings, atur UA browser standar: Key: User-Agent Value: 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

    Set User-Agent header

  4. Klik Debug. Di halaman Request Details, verifikasi bahwa permintaan berhasil. Jika permintaan berhasil setelah mengubah UA, lanjutkan uji stres dengan header yang telah dimodifikasi.

Pemblokiran WAF (jarang terjadi)

Penyebab: Web Application Firewall (WAF) memblokir trafik uji stres.

Solusi: Konfigurasikan aturan daftar putih WAF yang mengizinkan trafik PTS. Untuk detailnya, lihat Apa yang harus saya lakukan jika trafik uji stres tidak dapat mengakses aplikasi web saya karena kebijakan keamanan?

Domain belum terdaftar (Pendaftaran ICP)

Penyebab: Nama domain yang digunakan untuk uji stres belum terdaftar, atau diselesaikan ke domain lain yang belum terdaftar.

Solusi: Periksa badan respons. Jika respons berisi HTML serupa berikut, domain tersebut belum memiliki Pendaftaran ICP:

<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>

Ajukan Pendaftaran ICP untuk domain tersebut sebelum mencoba kembali uji stres.

405 (Method Not Allowed)

Respons 405 berarti server tidak mendukung metode HTTP yang digunakan dalam permintaan. Penyebab umum dalam PTS:

  1. Redirect 302 mengubah metode permintaan. Saat permintaan POST memicu redirect 302, klien HTTP mungkin mengubahnya menjadi permintaan GET. Jika titik akhir target tidak menerima GET, error 405 akan dikembalikan.

  2. Server secara eksplisit membatasi metode. Periksa header Allow dalam respons (misalnya, Allow=GET) untuk mengetahui metode mana yang diterima server.

  3. Pengalihan SLB atau server web mengubah metode. Saat load balancer atau reverse proxy meneruskan permintaan, metode tersebut mungkin berubah. Verifikasi aturan pengalihan.

406 (Not Acceptable)

Respons 406 berarti server tidak dapat menghasilkan respons yang sesuai dengan header Accept dalam permintaan.

Penyebab: Nilai Accept di tab Header Definition tidak sesuai dengan tipe konten yang dapat dikembalikan server. Hal ini biasanya terjadi ketika Content-Type di tab Body Definition disinkronkan secara otomatis ke tab Header Definition, dan nilai Accept bertentangan dengannya.

Header and body definition tabs

Solusi: Sesuaikan header Accept agar sesuai dengan tipe yang didukung server. Uji berbagai nilai untuk menentukan tipe mana yang diterima server. Tabel berikut mencantumkan format Accept umum dan urutan pencocokannya.

FormatDeskripsi
text/htmlHTML
text/plainTeks biasa
text/xmlXML
image/gifGambar GIF
image/jpegGambar JPEG
image/pngGambar PNG
application/xhtml+xmlXHTML
application/xmlData XML
application/atom+xmlAgregasi XML Atom
application/jsonData JSON
application/pdfPDF
application/mswordDokumen Word
application/octet-streamAliran biner (unduhan file)
application/x-www-form-urlencodedEnkode formulir default (pasangan kunci-nilai)

Prioritas pencocokan: Saat beberapa tipe Accept ditentukan, server mencocokkannya dalam urutan berikut:

  • Tanpa faktor kualitas: Dicocokkan dari kiri ke kanan. application/xml, text/html, application/json dicocokkan sebagai application/xml > text/html > application/json.

  • Dengan faktor kualitas: Nilai q yang lebih tinggi memiliki prioritas lebih tinggi. application/xml;q=0.3, application/json;q=0.8, text/html (default q=1.0) dicocokkan sebagai text/html > application/json > application/xml.

  • Spesifisitas wildcard: Tipe yang lebih spesifik dicocokkan terlebih dahulu. */*, text/*, text/html dicocokkan sebagai text/html > text/* > */*.

503 (Service Unavailable)

Server backend kelebihan beban

Penyebab: Server backend kelebihan beban dan menolak menerima permintaan tambahan.

Solusi: Periksa log error server backend untuk mengidentifikasi kehabisan sumber daya atau batas kapasitas.

Pembatasan kecepatan SLB akibat jumlah IP sumber terbatas

Penyebab: Sejumlah besar error 503 muncul di log pengambilan sampel PTS, tetapi server backend tidak menunjukkan error yang sesuai. Hal ini biasanya terjadi saat semua kondisi berikut terpenuhi:

  • Uji stres menggunakan API HTTP atau HTTPS.

  • Titik masuk adalah instance SLB (Internet-facing atau akses internal).

  • Layanan backend tidak mengembalikan error 503.

  • Badan respons 503 sesuai pola 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>The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.</body>
      </html>

Akar penyebab: PTS menggunakan koneksi panjang secara default. Saat jumlah alamat IP sumber sedikit, satu alamat IP dapat memicu pembatasan kecepatan single-proxy SLB, sehingga SLB tidak dapat menyeimbangkan beban secara efektif.

Solusi:

  1. Aktifkan fitur ekstensi IP PTS untuk menambah jumlah IP sumber. Untuk detailnya, lihat Jalankan skenario.

  2. Tingkatkan jumlah maksimum pengguna virtual atau nilai RPS (requests per second). Untuk detailnya, lihat Konfigurasi model dan tingkat beban.

  3. Beralih dari koneksi panjang ke koneksi pendek. Di halaman Scenario Settings, tambahkan header berikut di tab Header Definition: Key: Connection Value: close

    Catatan

    API yang baru ditambahkan mewarisi pengaturan ini secara default. Sesuaikan per API jika skenario Anda memerlukan mode koneksi campuran.

    Set Connection header to close

504 (BadGateway Timeout)

Penyebab: Gerbang tidak menerima respons tepat waktu dari server backend.

Solusi:

  1. Pastikan server backend berjalan dan memproses permintaan secara normal.

  2. Perpanjang periode timeout di lapisan gerbang.

  3. Perpanjang timeout permintaan di bagian Advanced Settings pada halaman Create Scenario untuk memberi generator beban lebih banyak waktu.