Application Real-Time Monitoring Service (ARMS) aracısı, uygulama performansını yönetmek amacıyla uygulama çalışma zamanında byte kodlarını iyileştirir. Byte kod iyileştirmesi yoluyla uygulanan diğer performans yönetimi çözümlerine benzer şekilde, Java için ARMS aracısı belirli bir performans yükü getirir. Ancak ARMS ekibi, uygulama kararlığını bozmadan aracının performans yükünü azaltmak için birçok teknik kullanır. Bu test raporunda, farklı trafik senaryoları simüle edilerek Java V4.x için ARMS aracısının performans yükü test edilir. Uygulamanızı Application Monitoring hizmetine bağlamadan önce kapsamlı bir değerlendirme yapmak üzere bu rapora bakmanızı öneririz.
Test senaryoları
Akış şeması
Spring Web model-view-controller (MVC) modeli kullanılarak geliştirilen Java uygulaması, Alibaba Cloud Performance Testing (PTS) üzerinden gönderilen isteklere dayanarak Druid ve Jedis çerçeveleri aracılığıyla MySQL ve Redis hizmetlerine erişir.
Uygulama,
${mall-gateway}/case/api/v1/mysql/executeisteklerini aldığında MySQL hizmetine erişir. Uygulama bu isteği her aldığında MySQL hizmetine 1 ila 4 kez erişir.Uygulama,
${mall-gateway}/case/api/v1/redis/executeisteklerini aldığında Redis hizmetine erişir. Uygulama bu isteği her aldığında Redis hizmetine 1 ila 10 kez erişir.
Test ortamı
Stres testi kaynağını PTS sağlar.
Java uygulaması, MySQL ve Redis aynı Alibaba Cloud Container Service for Kubernetes (ACK) kümesinde dağıtılır. Düğümlerin örnek türü ecs.u1-c1m2.8xlarge olup düğümlerin işletim sistemi sürümü Alibaba Cloud Linux 2.1903 LTS 64-bittir.
-
Uygulamanın her bir pod'u 2 çekirdekli işlemciye ve 4 GB belleğe sahiptir; iki çoğaltma bulunur. JVM parametreleri aşağıdaki gibidir:
-Xms3500m -Xmx3500m -XX:MetaspaceSize=500m Java için ARMS aracısı sürümü 4.2.1'dir.
Test prosedürü
Sırasıyla 500, 1.000 ve 2.000 QPS değerlerinde üç stres testi gerçekleştirin. Her stres testi 1 saat sürer. Her stres testinden önce Java uygulamasını 3 dakika boyunca 100 QPS hızında ısındırın. Test sonucu temel performans ölçümleri olarak kullanılacaktır.
Java için ARMS aracısı V4.1.11 sürümünü yükleyin. Örnekleme ilkesinde %10 örnekleme oranı yapılandırın ve Java uygulamasının CPU yükü, bellek yükü ile yanıt süresi arasındaki farkları karşılaştırmak için 1. Adımdaki stres testlerini tekrarlayın.
Java için ARMS aracısı V4.1.11 sürümünü yükleyin. Örnekleme ilkesinde %100 örnekleme oranı yapılandırın ve Java uygulamasının CPU yükü, bellek yükü ile yanıt süresi arasındaki farkları karşılaştırmak için 1. Adımdaki stres testlerini tekrarlayın.
Örnekleme ilkesinin nasıl yapılandırılacağı hakkında daha fazla bilgi için İz örnekleme modları (Aracı V3.2.8 veya sonraki sürümler) konusuna bakın.
Ölçümler, izler ve yüzdeler dahil olmak üzere Application Monitoring'in temel özellikleri etkinleştirilir. Tüm eklentiler de etkinleştirilir. İz sıkıştırma, URL birleştirme, veri maskeleme ve sürekli profil oluşturma gibi bazı gelişmiş özellikler geçici olarak devre dışı bırakılır.
Temel performans ölçümleri
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CPU ölçümü, pod'lar tarafından kullanılan CPU'nun toplam CPU'ya (2 çekirdek) oranını yüzdesel olarak ifade eder.
Bellek ölçümü, pod'lar tarafından kullanılan belleğin toplam belleğe oranını yüzdesel olarak ifade eder. Pod'lar tarafından kullanılan bellek doğal olarak istekler (requests) değerine ulaşana kadar arttığından raporda stres testlerinin sonunda gerçekleşen gerçek bellek kullanımı dikkate alınır.
Yanıt süresi ölçümü, isteklerin ortalama yanıt süresini temsil eder. Birim milisaniyedir.
Java V4.x için ARMS aracısının performans ölçümleri
|
Öğe |
%10 örnekleme oranı |
%100 örnekleme oranı |
||||
|
CPU |
Bellek |
Yanıt süresi (Birim: milisaniye) |
CPU |
Bellek |
Yanıt süresi (Birim: milisaniye) |
|
|
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 |
Örnekleme oranı ile hem CPU hem de QPS arasındaki ilişki doğrusal değildir. Varsayılan olarak saniye başına iz toplama için bir üst sınır bulunur.
Java V4.x için ARMS aracısının performans yükü
|
Öğe |
%10 örnekleme oranı |
%100 örnekleme oranı |
||||
|
CPU |
Bellek |
Yanıt süresi (Birim: milisaniye) |
CPU |
Bellek |
Yanıt süresi (Birim: milisaniye) |
|
|
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 |
Sonuç
Java V4.x için ARMS aracısından kaynaklanan ek CPU ve bellek yükü %10 içinde kalır.
Java V4.x için ARMS aracısı yanıt süresi üzerinde küçük bir etkiye (%10) sahiptir; 1.000 QPS hızında artış yalnızca 1 milisaniyedir.
%100 sabit örnekleme oranındaki performans yükü, %10 sabit örnekleme oranındakinden biraz daha fazladır.