Application Real-Time Monitoring Service (ARMS), ARMS aracı aracılığıyla sürekli profil oluşturma özelliği sunar. Bu özellik, Java uygulamalarından çalışma zamanında CPU, bellek ve kod düzeyinde tanılama verileri toplar. Bu rapor, gerçekçi üretim iş yükleri altındaki bu ek yükü nicelendirir.
Temel bulgu: Tüm sürekli profil oluşturma özellikleri etkinleştirildiğinde, CPU ve bellek ek yükü %5'in altında kalır ve yanıt süresi 0,2 ms'den daha az artar.
Test kurulumu
Uygulama mimarisi
Test uygulaması Spring Web MVC ile oluşturulmuştur ve iki tür isteği işler:
${mall-gateway}/case/api/v1/mysql/execute-- istek başına MySQL'e 1 ila 4 kez erişir${mall-gateway}/case/api/v1/redis/execute-- istek başına Redis'e 1 ila 10 kez erişir
Her istek türü, toplam saniye başına sorgu (QPS) sayısının %50'sini oluşturur.
Ortam
| Bileşen | Yapılandırma |
|---|---|
| Stres testi | Alibaba Cloud Performance Testing (PTS) |
| Küme | Alibaba Cloud Container Service for Kubernetes (ACK), tek küme |
| Düğüm örnek türü | ecs.u1-c1m2.8xlarge |
| İşletim sistemi | Alibaba Cloud Linux 2.1903 LTS 64-bit |
| Uygulama pod'ları | 2 çekirdek, 4 GB bellek, 2 çoğaltma |
| ARMS aracı | Java v4.2.1 |
Java uygulaması, MySQL ve Redis aynı ACK kümesine dağıtılmıştır.
Demo kodu: alibabacloud-microservice-demo/arms-demo
Yordam
Her test çalışması aşağıdaki sırayı izler:
ARMS aracısını yükleyin ve örnekleme oranını (%10 veya %100) ayarlayın.
Uygulamayı 5 dakika boyunca 50 QPS ile ısıtın.
Sürekli profil oluşturma devre dışı bırakılmışken hedef QPS'de 30 dakika boyunca bir stres testi çalıştırın. Temel CPU kullanımı, bellek kullanımı ve yanıt süresini kaydedin.
Tüm sürekli profil oluşturma özelliklerini dinamik olarak etkinleştirin: CPU tanılama, bellek tanılama ve kod tanılama. Stres testini başka 30 dakika daha sürdürün ve aynı ölçümleri kaydedin.
Her stres testi toplamda 1 saat sürer. Testler, hem %10 hem de %100 örnekleme oranları için 500, 1.000 ve 2.000 QPS'de tekrarlanır.
Temel çizgi: Sürekli profil oluşturma olmadan performans
| QPS | Örnekleme oranı | CPU | Bellek | Yanıt süresi |
|---|---|---|---|---|
| 500 | %10 | %8.112 | %13,52 | 55,5 ms |
| 500 | %100 | %8.416 | %13,62 | 56,5 ms |
| 1.000 | %10 | %15.247 | %14,14 | 62,9 ms |
| 1.000 | %100 | %15.614 | %14,42 | 65,3 ms |
| 2.000 | %10 | %30.550 | %14,64 | 70,6 ms |
| 2.000 | %100 | %30.945 | %14,67 | 71,1 ms |
Sürekli profil oluşturma etkinleştirildiğinde performans
| QPS | Örnekleme oranı | CPU | Bellek | Yanıt süresi |
|---|---|---|---|---|
| 500 | %10 | %8.912 | %15,52 | 55,6 ms |
| 500 | %100 | %9.316 | %15,71 | 56,6 ms |
| 1.000 | %10 | %17.140 | %16,24 | 63,0 ms |
| 1.000 | %100 | %17.710 | %16,82 | 65,4 ms |
| 2.000 | %10 | %34.650 | %16,84 | 70,7 ms |
| 2.000 | %100 | %35.245 | %16,89 | 71,3 ms |
Sürekli profil oluşturmadan kaynaklanan ek yük
Bu tablo, sürekli profil oluşturmaktan kaynaklanan ek yükü izole eder. Aynı test çalışması içinde özelliği etkinleştirmeden önce ve sonra ölçümleri karşılaştırır.
| QPS | Örnekleme oranı | CPU | Bellek | Yanıt süresi |
|---|---|---|---|---|
| 500 | %10 | +%0,80 | +%2,00 | +0,1 ms |
| 500 | %100 | +%0,90 | +%2,09 | +0,1 ms |
| 1.000 | %10 | +%1.893 | +%2,10 | +0,1 ms |
| 1.000 | %100 | +%2.096 | +%2,40 | +0,1 ms |
| 2.000 | %10 | +%4,10 | +%2,20 | +0,1 ms |
| 2.000 | %100 | +%4,30 | +%2,22 | +0,2 ms |
Temel gözlemler:
CPU ek yükü QPS ile ölçeklenir: 500 QPS'de +%0,80'den 2.000 QPS'de +%4,30'a (%100 örnekleme). Test edilen tüm yük seviyelerinde CPU ek yükü %5'in altında kalır.
Bellek ek yükü, tüm yük seviyelerinde ve örnekleme oranlarında yaklaşık +%2 düzeyinde tutarlı kalır.
Yanıt süresi 0,1 ila 0,2 ms artar; bu, son kullanıcı gecikme süresi üzerinde ihmal edilebilir bir etkidir.
Sonuç
Tüm sürekli profil oluşturma özellikleri (CPU tanılama, bellek tanılama ve kod tanılama) etkinleştirildiğinde, CPU ve bellek ek yükü %5 içinde kalır. Özelliklerin bir alt kümesinin etkinleştirilmesi ek yükü daha da azaltır.
Sürekli profil oluşturma, uygulama gecikme süresi üzerinde ihmal edilebilir bir etkiye sahiptir. Yanıt süresi, test edilen koşullar altında en fazla 0,2 ms artar.