Uygulama Performans Yönetimi (APM)

Cenk Türker
Huawei Developers - Türkiye
9 min readNov 5, 2020
APM

APM nedir ?

Uygulama Performans Yönetimi (APM) genel olarak, erişilebilirlik ve performans açısından yazılımları izleme ve yönetme, özellikle kritik uygulamalara erişimde kesintilere neden olan sorunları algılama gibi özelliklerle web ve bulut hizmetleri için önemli hizmetler sağlar.

APM özellikleri ve Temel İşlevler

Key Functions of APM

APM, kullanıcılarının karşılaştığı sorunlarla kolaylıkla başa çıkabileceği bazı özelliklere sahiptir;

  • Otomatik olarak önemli uygulama performans verilerini toplama,
  • Keşif modelleme ve görüntüleme,
  • Bir uygulama bağlamında derinlemesine izleme,
  • Veri analizi,
  • Keşif modelleme ve Kullanıcı tanımlı işlem profili oluşturma.

APM’nin Çalışma Prensibi

HUAWEI AppGallery Connect’in Uygulama Performans Yönetimi (APM), dakika düzeyinde uygulama performansı izleme yetenekleri sağlar. Uygulamaların çevrimiçi performansını gerçek zamanlı olarak kapsamlı bir şekilde anlamak için APM tarafından toplanan uygulama performansı verilerini görüntüleyebilir ve analiz edebilir, böylece uygulama performans sorunlarını hızlı ve doğru bir şekilde düzeltebilir ve kullanıcı deneyimini sürekli olarak iyileştirebilirsiniz.

Schema of APM working principle

HMS ile APM Nasıl Kullanılır?

APM in HMS

AppGallery Connect SDK’yı entegre etme

APM SDK’yı entegre etmeden önce, uygulamanızın AppGallery Connect SDK ve AppGallery Connect eklentisiyle entegre edildiğinden emin olun. Ayrıntılar için lütfen Android’e Başlarken sayfasına bakın.

APM SDK’yı entegre etme

1- Geliştirme ortamında, app-level APM SDK bağımlılığı olan build.gradle dosyasına ihtiyacımız var.

2- Lütfen aşağıdaki öğeleri uygulama düzeyinde gizleme yapılandırmalarına ekleyin:

3- AndResGuard kullanıyorsanız, şaşırtmayı önlemek için aşağıdakileri güven listesine ekleyin:

4- Uygulamanız AndroidX sınıf kitaplığını kullanıyorsa, aşağıdaki yapılandırmayı gradle.properties dosyasına eklemelisiniz, bu şekilde APM AndroidX’e otomatik olarak adapte olacaktır.

APM Eklentisini Entegre Etme

1- Build.gradle dosyasının uygulama düzeyinde APM eklentisine eklenmesi gerekir.

2- APM eklentisini proje düzeyindeki build.gradle dosyasına ekleyin.

Entegrasyon işlemi tamamlandıktan sonra aşağıdaki tablo adımı ile uygulamayı tekrar deryelebilirsiniz.

Build project

Tüm adımlar tamamlandıktan sonra APM için Entegrasyon işlemi sonlandırılır. Bir sonraki adım olarak verilerimizi performans izleme ekranında analiz edeceğiz.Son olarak sonuçları görüntüleyerek APM performans verilerini inceleyebiliriz.

Uygulama performans yönetimi nasıl etkinleştirilir ?

Şimdi, uygulama performans yönetimini adım adım nasıl etkinleştireceğinizi öğreneceksiniz.

1- Öncelikle, Huawei Geliştirici hesabınızla oturum açtıktan sonra, App Services →Huawei AppGallery → My apps kaydırarak devam edin.

2- Bu ekranda kendi uygulamanızı seçin, ardından sol alt tarafta Quality →APM aşağıdaki gibi göreceksiniz.

3- Son olarak aşağıdaki tabloda gösterildiği gibi “Enable” butonuna tıklanarak aktif hale getirilmelidir.

Enable button for APM on AppGallery Connect

Not: APM’yi etkinleştirirken, depolama konumunu belirlemeniz gerekir. Agconnect-services.json’daki bu konfigürasyondan sonra buna göre otomatik olarak güncellenir.

APM’yi etkinleştirirken veri depolama konumunu ayarladıysanız, agconnect-services.json dosyasını tekrar indirmeniz ve hizmet etkinleştirildikten sonra projenize entegre etmeniz gerekir.

Aşağıdaki tabloda, uygulama performans verilerinin düzgün görüntülenip görüntülenmediğini kontrol edebilirsiniz, ancak 15 dakikalık bir gecikme olabilir.
Verileri aynı anda görüntüleyemeyebilirsiniz, bu nedenle sayfanızı sürekli yenileyin.

APM Overview

Sayfa verileri yanlış gösteriyorsa veya sayfa uzun bir süre boş görünüyorsa, lütfen Hata Ayıklama Günlüklerini Görüntüleme sayfasını kontrol edin.

Uygulama Performans Verilerini Görüntüleme ve Analiz Etme

App launch duration

Bu bölümde, uygulamanın arka planda başlatıldığı zaman ile ilk sayfanın görüntülendiği zaman arasındaki süreyi öğreneceksiniz.

App Launch Duration

Bu işlev, uygulama başlatma süresini izler, böylece uygulama başlatma performansını zamanında anlayabilirsiniz. Gösterge olarak uygulama başlatma süresini kullanır ve uygulama başlatma süresinin genel dağılımını görüntülemek için uygulama başlatma süresinin yüzde değerini hesaplar.

Aşağıdaki tabloda,App analysis →App launch duration →View Details” e tıklayarak bununla ilgili daha fazla bilgiye ulaşabilir veya aynı şemayı Overview →Launch Duration(Indicator Overview) →Details adımlarını takip ederek görüntüleyebilirsiniz.

App Launch Duration 2

Sonuç olarak, Overview →Launch duration ekranını takip ederken şunlar hakkında inceleme yapacaksınız;

  • Ortalama olarak hangi saatler arasında uygulamaya başlandığı,
  • Uygulama kullanımında başlatma hızının yüzdesi,
  • Uygulama sürüm analizlerine göre başlangıç ​​saatine göre mevcuttur,
  • Ortalama başlangıç ​​zamanı

Aşağıdaki tabloda, App analysis →App launch duration →View Details e tıkladığınızda, farklı boyutlardaki yavaş kare hızları (sürüm numarası, ülke / bölge, cihaz modeli, seviye-1 bölge, sistem sürümü, operatör ve Boyutlar yavaş kare hızına, örnek sayısına veya oturum sayısına göre sıralanabilir.İstatistikler sürüme göre toplandığında, grafik tüm sürümlerin yavaş kare hızlarını gösterir.

Ayrıca sağ tarafta bulunan “View Sessions” ye tıklarken aşağıdaki tabloya geleceksiniz.

Session List 1

Uygulama başlama saati, ne kadar süre gerekli olduğu, bu süre içinde hangi akıllı telefon modelinin kullanıldığı, hangi ülkeden bağlantı, Ağın kullanıldığı gibi bilgilere ulaşabilirsiniz.

Ek olarak, grafikte gezinebilmeniz ve tüm birimlerle ilgili sayısal verileri inceleyebilmeniz için grafik üzerinde animasyonlu imleç bulunmaktadır.

Son olarak, “Operation” sütunu altında “View Details” yi tıklarsanız, aşağıdaki tabloda “Session List” sayfasını göreceksiniz. Bu bölümde de şu bilgileri edinebilirsiniz;

  • CPU kullanım süresi,
  • Hafıza kullanımı,
  • Cihazla ilgili bilgiler,
  • Ağ verileri
Session List 2

Background ve Foreground Activity Performans Verileri

Arka plan etkinlik süresi: Bir uygulama arka plana geçmeden önce son etkinliğin onStop() yöntemini çağırmasından, ilk etkinliğin uygulama ön plana geçtikten sonra onResume() yöntemini çağırmasına kadar geçen süre.

Ön plan etkinlik süresi: Bir uygulama başlatıldıktan veya ön plana geçtikten sonra ilk etkinliğin onResume() yöntemini çağırdığı zamandan, uygulama arka plana geçmeden önceki son etkinliğin onStop() yöntemini çağırmasına kadar geçen süre.

Aşağıdaki tabloya Overview →App Analysis → App foreground or background activity takip ederek ulaşabilirsiniz.

Background Activity
Foreground Activity

1- Sol üstte, ön plan etkinlik süresi dağılımını gösterir. İmleci hareket ettirdiğinizde, belirtilen ön uç etkinlik süresi ve yüzdelik dilim görüntülenir.

2- Sağ üstte, zamana göre ön plan etkinlik süresi dağılımını gösterir. İmleci hareket ettirdiğinizde, belirtilen zaman noktalarında medyan ön uç aktivite süresi ve 5. ve 95. yüzdelik dilimlerin süreleri görüntülenir.

3- Sol altta, sürüme göre ön plan etkinlik süresi dağılımını gösterir. Bir sürümün bir çubuğunu işaret ettiğinizde, medyan ön uç etkinlik süresi ve 5. ve 95. yüzdelik dilimler, örnek sayısı ve oturum sayısı görüntülenir.

Network Analysis

Performans verileri, bir uygulamanın sunucunuza bir ağ isteği gönderdiği zaman ile sunucunuzdan yanıtın tamamlandığı zaman, istek durum kodu, istek yükü ve yanıt yükü arasındaki süreyi içerir.

Ağ Talep Göstergesi Tanımı

URL: ağ istek URL’si.
İstek sayısı: bir istek URL’sinin çağrılma sayısı.
İstek süresi: Bir uygulamanın bir istek gönderdiği zaman ile uygulamanın sunucudan bir yanıt aldığı zaman arasındaki aralık.
Başarı oranı: durum kodu 2xx veya 3xx olan isteklerin toplam istek sayısına oranı.
İstek yükleme boyutu: Bir uygulamaya yüklemek için ağ yükünün bayt sayısı.
Yanıt yükleme boyutu: Bir uygulamada indirilecek ağ yükünün bayt sayısı.

Overview Network Analysis adımlarını takip ederek aşağıdaki sayfaya ulaşabilirsiniz.

Network Analysis

Yukarıdaki tabloda APM, OkHttp, URLConnection ve ApacheHttpClient tarafından başlatılan HTTP / HTTPS ağ isteklerini izler ve URL kümeleme kurallarını eşleştirerek aynı tür ağ isteklerinin verilerini kümeler, ağ isteği performans eğilimini anlamanıza ve ağ sorunlarını tespit etmenize yardımcı olur.

Ağ talebini görüntülemek için lütfen “operation” sütununun altındaki “View details” e tıklayın. Ayrıntılar sayfası, Request duration ve Request success rate sekme sayfalarını içerir.

Request duration

Request Duration

1- Sol üstteki şekil ağ istek sürelerinin dağılımını göstermektedir. İmleci hareket ettirdiğinizde, belirtilen ağ talebi süresinin yüzdelik dilimi görüntülenir. Örneğin, medyan ağ isteği süresi 1,6 saniyedir ve bu, ağ isteği sürelerinin% 50'sinin 1,6 saniyeden az veya buna eşit olduğunu gösterir.
2- Sağ üstteki şekil ağ talebi süresinin versiyona göre dağılımını göstermektedir. Bir sürümün bir çubuğunu işaret ettiğinizde, medyan ağ talebi süresi ve 5. ve 95. yüzdelik dilimler, örnek sayısı ve oturum sayısı görüntülenir.
3- Sol alttaki şekil ağ talebi süresinin versiyona göre dağılımını göstermektedir. Bir sürümün bir çubuğunu işaret ettiğinizde, medyan ağ talebi süresi ve 5. ve 95. yüzdelik dilimler, örnek sayısı ve oturum sayısı görüntülenir.

Request Success Rate

Aşağıdaki şema; İstek başarı oranı sayfasını açıklar;

1- Sol üstte, Ortalama ağ isteği başarı oranı, yani % 100.
2- Sağ üstte, ağ isteklerinin ilk 10 durum kodu oranı, 200 kodunun yanıt oranı % 100'dür.
3- Sol altta, ağ zamana göre başarı oranı dağılımı talep ediyor. 5 Ekim 08: 00'daki ağ isteği başarı oranı % 100'dür.
4- Sağ altta, ağ versiyona göre başarı oranı dağılımı talep ediyor. Bir sürüm çubuğuna işaret ettiğinizde, ilgili sürümün ağ isteği başarı oranı görüntülenir. Şekilde, sürüm 1.0 verilerinin ağ isteği başarı oranı% 100'dür.

Request Success Rate

Viewing ANR Data

ANR, bir Android uygulamasının UI iş parçacığının çok uzun süre engellendiği, “Application Not Responding” (ANR) hatası tetiklenen bir mekanizmadır. Bu durumda APM hizmeti, bir ANR meydana geldiğinde temel anahtar bilgileri kaydeder.

Uygulama ön plandaysa, sistem kullanıcıya tıpkı açılır menü gibi bir iletişim kutusu görüntüler ve kullanıcıya uygulamadan çıkmaya zorlama fırsatı verir.

Uygulama ANR Göstergeleri

Oluşumlar: ANR sorununun belirli bir zaman aralığında oluşma zamanı.
Etkilenen kullanıcılar: Belirli bir zaman aralığında ANR sorunlarından etkilenen kullanıcıların sayısı.
ANR’den etkilenen kullanıcı oranı: Belirli bir zaman aralığı ve kullanıcı oranı içindeki toplam uygulama kullanıcısı sayısı.
ANR’den etkilenen kullanıcı oranı eğilimi: Belirli bir zaman aralığı içinde ANR oluşumlarının uygulama başlatma zamanlarına oranı, yani tek bir uygulama başlatma sırasında ANR sorununun ortaya çıkma olasılığı.

ANR Analysis

Yukarıdaki genel ANR analizi ekranında, burada ANR ile ilgili tüm veri bilgilerini bulabilirsiniz;

  • Oluşumlar,
  • Etkilenen kullanıcılar,
  • ANR’den etkilenen kullanıcı oranı,
  • ANR’den etkilenen kullanıcı oranı eğilimi
Top 5 problems

Sayfanın sol üst köşesinde, özellikle kırmızı bölge alanıyla birlikte “Top 5 problems in last 24 hours” verilerini göreceksiniz.

ANR-affected user rate trend

ANR-affected user rate trend‘inde dilerseniz sağdaki sekmeyi filtreleyerek detaylı olarak inceleyebilirsiniz;

  • By time,
  • By app version,
  • By OS version,
  • By device model

Sayfanın en alt kısmında, “Problems (by affected user rate)” altında, etkilenen kullanıcılar hakkında bazı verileri aşağıdaki şekilde bulabilirsiniz;

  • Affected users in last 24 hours,
  • Affected user rate in last 24 hours,
  • Occurences,
  • Affected users,
  • First occured & last occured time
Problems (by affected user rate)

“Operation” sekmesinin altındaki “View details” ye tıkladığınızda. Grafiksel olarak daha detaylı analiz etme fırsatı bulacaksınız.

ANR analysis list

Sayfanın altında “records”bölümünü göreceksiniz. Bu bölümde şu çeşitli verileri inceleyebileceksiniz.

  • ID,
  • First occured,
  • App version,
  • OS version,
  • Device Model,
  • Operation
Records

“Operation” sekmesinde “View details” e tıklarken bu sefer muazzam bir veri sayfasıyla karşılaşacak ve ayrıntılı olarak şunları öğreneceksiniz;

  • Device information,
  • System information,
  • App information
Information

Bunların dışında, Ek olarak bu sayfa görüntülenir;

  • Main thread steak info,
  • Other thread steak info,
  • System logs,
  • ANR info

Bir ANR sorunu oluştuğunda, çeşitli bilgileri kapsamlı bir şekilde anlamanıza yardımcı olur.

Buna ek olarak APM, kayıt dışa aktarma işlevi sağlar. Karşılaştırma ve analiz için sayfadaki tüm bilgileri dışa aktarmak için “Export” düğmesine tıklayabilirsiniz.

Log Info

Bu bağlantı ile uygulamanızda APM’yi nasıl devre dışı bırakacağınızı öğrenebilirsiniz.

APM konusu hakkında araştırırken kendim oluşturduğum bazı SSS’ler.

SSS

S: APM, kullanıcının akıllı telefon bilgilerini (sistem sürümü, Model, Bellek, Taşıyıcı, İşletim Sistemi sürümü, CPU modeli vb.) Göstermeyi sağlıyor mu?
C: Evet, APM bunu mümkün kılıyor.

S: APM, CPU kullanım süresi, sistem ve kullanıcı tarafından ne kadar CPU kullanıldığını destekliyor mu?
C: Evet, APM hem sistem hem de kullanıcı için CPU kullanım süresi hakkında bilgi sağlar.

S: APM aktif olarak çalışırken ne kadar bellek kullanıldığını kullanıcı görebilir mi?
C: Evet, kullanıcı bellek kullanımını anında görüntüleyebilir.

S: Kullanıcılar, APM kullanarak cihazlarında çalıştırdıkları uygulamanın ön planda ve arka planda ne kadar süreyle çalıştığı hakkında bilgi alabilir mi?
C: Elbette, Arka Plan-Ön Plan etkinlik süresi, kullanıcıya başlangıç ​​zamanı ve toplam süre olarak gösterilir.

S: APM SDK hangi çerçeveleri destekler ve ağ istek izleme için fayda sağlar?
C: Bağlantılı URLConnection ve OkHttp çerçeveleri aracılığıyla başlangıç-bitiş zamanı, bağlantı için gerekli süre, Durum kodu, İstek yükü, yanıt yükü, indirme hızı vb. Ayrıntılı olarak kullanıcıyla paylaşılır.

S: APM SDK yalnızca Android uygulamalarını mı destekliyor?
C: APM SDK; HTML5 Sayfa Analizi, iOS platformu, web sistemi, Ağ korsanlığı analizi ve Android platformu gibi birden çok platformu destekler.

S: Ya ağ verileri yanıt vermiyorsa, ana sorunun nerede olduğunu nasıl kontrol edebilirim?
C: APM’nin ana sorunun çözümü için sunduğu ANR analizi bölümünde, bu durumdan etkilenen kullanıcı sayıları, oranları ve grafiksel olarak detaylı bilgiler tarafımıza verilmektedir. Uygulama otomatik olarak ANR’yi tetikler ve bir cevap alamaması durumunda, saklanan sistem günlük dosyaları ve ANR bilgileriyle sorunun tespit edilmesini sağlar.

Bu yazının sizin için çok faydalı olacağını umuyorum, bir sonraki yazımda görüşmek üzere, hoşçakalın…

Referanslar

https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Guides/agc-apms-introduction

--

--