Application Real-Time Monitoring Service (ARMS) menyediakan teknologi profil berkelanjutan untuk aplikasi selama waktu proses. Seperti alat pengumpulan data lainnya, teknologi ini memperkenalkan tingkat overhead kinerja tertentu. Namun, ARMS telah menerapkan beberapa teknik optimasi untuk meminimalkan overhead tersebut, memastikan operasi aplikasi yang stabil. Dalam laporan ini, skenario penggunaan dunia nyata disimulasikan untuk menguji overhead kinerja yang diperkenalkan oleh profil berkelanjutan di bawah kondisi lalu lintas bisnis yang berbeda. Anda dapat merujuk pada laporan ini untuk mengevaluasi dampak kinerja sebelum menggunakan profil berkelanjutan.
Skema Pengujian
Flowchart:
Dikembangkan dalam model Spring Web model-view-controller (MVC), aplikasi Java mengakses MySQL dan Redis berdasarkan permintaan yang dikirim dari Alibaba Cloud Performance Testing (PTS). Untuk permintaan ${mall-gateway}/case/api/v1/mysql/execute, aplikasi mengakses MySQL 1 hingga 4 kali per permintaan. Untuk permintaan ${mall-gateway}/case/api/v1/redis/execute, aplikasi mengakses Redis 1 hingga 10 kali per permintaan. Setiap tipe permintaan mencakup 50% dari queries per second (QPS).
Lingkungan Pengujian
Sumber uji stres disediakan oleh PTS.
Aplikasi Java, MySQL, dan Redis semuanya ditempatkan di kluster Container Service for Kubernetes (ACK) milik Alibaba Cloud yang sama. Tipe instans node adalah ecs.u1-c1m2.8xlarge, menjalankan Alibaba Cloud Linux 2.1903 LTS 64-bit.
Pod aplikasi dikonfigurasikan dengan 2 core, 4 GB memori, dan dua replika setiap pod.
Agen ARMS untuk Java v4.2.1 digunakan.
Prosedur Pengujian
Instal agen ARMS. Konfigurasikan laju sampling 10%. Lakukan tiga uji stres pada 500, 1.000, dan 2.000 QPS. Durasi setiap uji stres adalah 1 jam. Sebelum setiap uji stres, pemanasan aplikasi Java dilakukan pada 50 QPS selama 5 menit. Kemudian, jalankan aplikasi selama 30 menit. Ketika semua metrik menjadi stabil, aktifkan dinamis semua fitur profil berkelanjutan (termasuk diagnostik CPU, diagnostik memori, dan diagnostik kode), dan lanjutkan menjalankan aplikasi selama 30 menit lagi. Amati perbedaan berbagai metrik kinerja (overhead CPU, overhead memori, dan waktu respons) aplikasi sebelum dan sesudah mengaktifkan profil berkelanjutan.
Ulangi uji stres dari langkah 1 dengan agen diaktifkan dan laju sampling diatur ke 100%. Bandingkan overhead CPU dan memori, serta waktu respons aplikasi.
Data metrik kinerja tanpa profil berkelanjutan
Item | Laju sampling 10% | Laju sampling 100% | ||||
CPU | Memori | Waktu Respons | CPU | Memori | Waktu Respons | |
500 QPS | 8.112% | 13.52% | 55.5 ms | 8.416% | 13.62% | 56.5 ms |
1.000 QPS | 15.247% | 14.14% | 62.9 ms | 15.614% | 14.42% | 65.3 ms |
2.000 QPS | 30.550% | 14.64% | 70.6 ms | 30.945% | 14.67% | 71.1 ms |
Data metrik kinerja dengan profil berkelanjutan
Item | Laju sampling 10% | Laju sampling 100% | ||||
CPU | Memori | Waktu Respons | CPU | Memori | Waktu Respons | |
500 QPS | 8.912% | 15.52% | 55.6 ms | 9.316% | 15.71% | 56.6 ms |
1.000 QPS | 17.140% | 16.24% | 63.0 ms | 17.710% | 16.82% | 65.4 ms |
2.000 QPS | 34.650% | 16.84% | 70.7 ms | 35.245% | 16.89% | 71.3 ms |
Overhead kinerja profil berkelanjutan
Item | Laju sampling 10% | Laju sampling 100% | ||||
CPU | Memori | Waktu Respons | CPU | Memori | Waktu Respons | |
500 QPS | +0.80% | +2.00% | +0.1 ms | +0.90% | +2.09% | +0.1 ms |
1.000 QPS | +1.893% | +2.10% | +0.1 ms | +2.096% | +2.40% | +0.1 ms |
2.000 QPS | +4.10% | +2.20% | +0.1 ms | +4.30% | +2.22% | +0.2 ms |
Kesimpulan
Mengaktifkan semua fitur profil berkelanjutan menghasilkan overhead CPU dan memori dalam batas 5%. Mengaktifkan hanya fitur tertentu, seperti diagnostik kode, lebih jauh mengurangi overhead tersebut.
Profil berkelanjutan memberikan dampak minimal terhadap latensi aplikasi. Tidak ada perubahan signifikan dalam waktu respons yang diamati di bawah kondisi stres tipikal sebelum dan sesudah mengaktifkan profil berkelanjutan.