Application Real-Time Monitoring Service (ARMS) agent meningkatkan bytecodes selama waktu proses aplikasi untuk mengelola kinerja aplikasi. Mirip dengan solusi manajemen kinerja lainnya yang diimplementasikan melalui peningkatan bytecode, agen ARMS untuk Java membawa sejumlah overhead kinerja tertentu. Namun, tim ARMS telah mengadopsi berbagai teknik untuk mengurangi overhead kinerja agen tanpa mengorbankan stabilitas aplikasi. Dalam laporan pengujian ini, skenario dengan lalu lintas berbeda disimulasikan untuk menguji overhead kinerja agen ARMS untuk Java V4.x. Sebelum Anda menghubungkan aplikasi Anda ke Application Monitoring, kami sarankan Anda merujuk pada laporan ini untuk melakukan evaluasi menyeluruh.
Skenario pengujian
Flowchart
Dikembangkan dalam model Spring Web model-view-controller (MVC), aplikasi Java akan mengakses MySQL dan Redis melalui framework Druid dan Jedis berdasarkan permintaan yang dikirim dari Alibaba Cloud Performance Testing (PTS).
Ketika menerima permintaan
${mall-gateway}/case/api/v1/mysql/execute, aplikasi mengakses MySQL. Setiap kali aplikasi menerima permintaan ini, ia mengakses MySQL sebanyak 1 hingga 4 kali.Ketika menerima permintaan
${mall-gateway}/case/api/v1/redis/execute, aplikasi mengakses Redis. Setiap kali aplikasi menerima permintaan ini, ia mengakses Redis sebanyak 1 hingga 10 kali.
Lingkungan pengujian
Sumber uji stres disediakan oleh PTS.
Aplikasi Java, MySQL, dan Redis semuanya ditempatkan di kluster Container Service for Kubernetes (ACK) yang sama di Alibaba Cloud. Tipe instans node adalah ecs.u1-c1m2.8xlarge, dan versi sistem operasi node adalah Alibaba Cloud Linux 2.1903 LTS 64-bit.
Setiap pod aplikasi memiliki 2 core, 4 GB memori, dan dua replika. Parameter JVM adalah sebagai berikut:
-Xms3500m -Xmx3500m -XX:MetaspaceSize=500mVersi agen ARMS untuk Java adalah 4.2.1.
Prosedur pengujian
Lakukan tiga uji stres pada 500, 1.000, dan 2.000 QPS. Setiap uji stres berlangsung selama 1 jam. Sebelum setiap uji stres, pemanasan aplikasi Java dilakukan pada 100 QPS selama 3 menit. Hasil pengujian akan digunakan sebagai metrik kinerja dasar.
Instal agen ARMS untuk Java V4.1.11. Konfigurasikan laju pengambilan sampel sebesar 10% dalam kebijakan pengambilan sampel, dan ulangi uji stres pada Langkah 1 untuk membandingkan perbedaan dalam overhead CPU, overhead memori, dan waktu respons aplikasi Java.
Instal agen ARMS untuk Java V4.1.11. Konfigurasikan laju pengambilan sampel sebesar 100% dalam kebijakan pengambilan sampel, dan ulangi uji stres pada Langkah 1 untuk membandingkan perbedaan dalam overhead CPU, overhead memori, dan waktu respons aplikasi Java.
Untuk informasi lebih lanjut tentang cara mengonfigurasi kebijakan pengambilan sampel, lihat Pilih mode pengambilan sampel jejak untuk agen ARMS V3.2.8 dan yang lebih baru.
Fitur dasar Application Monitoring diaktifkan, termasuk data deret waktu, jejak, dan kuantil. Semua Plugin juga diaktifkan. Beberapa fitur canggih dinonaktifkan sementara, seperti kompresi jejak, konvergensi URL, masking data, dan profiling berkelanjutan.
Metrik kinerja dasar
Item | CPU | Memori | Waktu respons (Satuan: milidetik) |
500 QPS | 6.737% | 11.51% | 57.6 |
1.000 QPS | 13.040% | 11.81% | 63.9 |
2.000 QPS | 26.796% | 12.19% | 70.5 |
Metrik CPU mewakili persentase CPU yang digunakan oleh pod terhadap total CPU (2 core).
Metrik memori mewakili persentase memori yang digunakan oleh pod terhadap total memori. Karena memori yang digunakan oleh pod tumbuh secara alami hingga mencapai nilai requests, laporan ini menggunakan penggunaan memori aktual pada akhir uji stres.
Metrik waktu respons mewakili waktu respons rata-rata permintaan. Satuan: milidetik.
Metrik kinerja agen ARMS untuk Java V4.x
Item | Laju pengambilan sampel 10% | Laju pengambilan sampel 100% | ||||
CPU | Memori | Waktu respons (Satuan: milidetik) | CPU | Memori | Waktu respons (Satuan: milidetik) | |
500 QPS | 8.412% | 13.72% | 58.5 | 9.316% | 13.91% | 58.7 |
1.000 QPS | 16.947% | 14.14% | 64.9 | 18.114% | 14.42% | 65.3 |
2.000 QPS | 34.850% | 14.64% | 74.6 | 35.945% | 14.67% | 76.1 |
Hubungan antara laju pengambilan sampel dan baik CPU maupun QPS bersifat nonlinier. Secara default, ada batas atas untuk pengumpulan jejak per detik.
Overhead kinerja agen ARMS untuk Java V4.x
Item | Laju pengambilan sampel 10% | Laju pengambilan sampel 100% | ||||
CPU | Memori | Waktu respons (Satuan: milidetik) | CPU | Memori | Waktu respons (Satuan: milidetik) | |
500 QPS | +1.68% | +2.21% | +0.9 | +2.58% | +2.40% | +1.1 |
1.000 QPS | +3.907% | +2.33% | +1.0 | +5.07% | +2.61% | +1.4 |
2.000 QPS | +8.05% | +2.45% | +4.1 | +9.14% | +2.48% | +5.6 |
Kesimpulan
Overhead tambahan CPU dan memori yang disebabkan oleh agen ARMS untuk Java V4.x berada dalam 10%.
Agen ARMS untuk Java V4.x memiliki dampak kecil pada waktu respons (10%), yang hanya meningkat sebesar 1 milidetik pada 1.000 QPS.
Overhead kinerja pada laju pengambilan sampel tetap 100% sedikit lebih besar daripada pada laju pengambilan sampel tetap 10%.