Visual Studio Profiler Kullanarak Azure İşlem Öykünücüsü'nde Bir Bulut Hizmetinin (klasik) Performansını Yerel Olarak Test Etme

Önemli

Cloud Services (klasik) artık yeni müşteriler için kullanımdan kaldırılmıştır ve tüm müşteriler için 31 Ağustos 2024'te kullanımdan kaldırılacaktır. Yeni dağıtımlarda yeni Azure Resource Manager tabanlı dağıtım modeli Azure Cloud Services (genişletilmiş destek) kullanılmalıdır.

Bulut hizmetlerinin performansını test etme amacıyla çeşitli araçlar ve teknikler mevcuttur. Azure'da bir bulut hizmeti yayımladığınızda Visual Studio'ya profil oluşturma verilerini toplamasını ve ardından Azure Uygulaması profil oluşturma bölümünde açıklandığı gibi yerel olarak analiz etmelerini sağlayabilirsiniz. Tanılamayı, Azure'da performans sayaçlarını kullanma bölümünde açıklandığı gibi çeşitli performans sayaçlarını izlemek için de kullanabilirsiniz. Uygulamanızı buluta dağıtmadan önce işlem öykünücüsünde yerel olarak profillerini de oluşturmanız gerekebilir.

Bu makale, öykünücüde yerel olarak yapilebilen PROFIL oluşturmanın CPU Örnekleme yöntemini kapsar. CPU örneklemesi, çok müdahaleci olmayan bir profil oluşturma yöntemidir. Belirlenen örnekleme aralığında, profil oluşturucu çağrı yığınının anlık görüntüsünü alır. Veriler belirli bir süre içinde toplanır ve bir raporda gösterilir. Bu profil oluşturma yöntemi, yoğun işlem gücü kullanan bir uygulamada CPU işinin büyük bölümünün nerede yapıldığını belirtme eğilimindedir. Bu size, uygulamanızın en çok zaman geçirdiği "etkin yola" odaklanma fırsatı verir.

1: Profil oluşturma için Visual Studio'yu yapılandırma

İlk olarak, profil oluşturma sırasında yararlı olabilecek birkaç Visual Studio yapılandırma seçeneği vardır. Profil oluşturma raporlarına anlam vermek için, uygulamanız için simgelere (.pdb dosyaları) ve sistem kitaplıklarına yönelik simgelere ihtiyacınız olacaktır. Kullanılabilir sembol sunucularına başvurduğunuzdan emin olmak istersiniz. Bunu yapmak için Visual Studio'daki Araçlar menüsünde Seçenekler'i ve ardından Hata Ayıklama'yı ve ardından Simgeler'i seçin. Microsoft Sembol Sunucuları'nın Simge dosyası (.pdb) konumları altında listelendiğinden emin olun. Ayrıca, ek sembol dosyalarına sahip olabilecek öğesine de başvurabilirsiniz https://referencesource.microsoft.com/symbols.

Simge seçenekleri

İsterseniz, Yalnızca Kendi Kodum'u ayarlayarak profil oluşturucunun oluşturduğu raporları basitleştirebilirsiniz. Yalnızca Kodum etkinleştirildiğinde işlev çağrı yığınları basitleştirilir, böylece kitaplıklara yönelik çağrılar tamamen dahilidir ve .NET Framework raporlardan gizlenir. Araçlar menüsünde Seçenekler'i seçin. Ardından Performans Araçları düğümünü genişletin ve Genel'i seçin. Profil oluşturucu raporları için Yalnızca Kendi Kodumu Etkinleştir onay kutusunu seçin.

Yalnızca Kodum seçenekleri

Bu yönergeleri mevcut bir projeyle veya yeni bir projeyle kullanabilirsiniz. Aşağıda açıklanan teknikleri denemek için yeni bir proje oluşturursanız, bir C# Azure Bulut Hizmeti projesi seçin ve bir Web Rolü ile Çalışan Rolü seçin.

Azure Bulut Hizmeti proje rolleri

Örneğin, projenize çok zaman alan ve bazı belirgin performans sorunları gösteren bazı kodlar ekleyin. Örneğin, bir çalışan rolü projesine aşağıdaki kodu ekleyin:

public class Concatenator
{
    public static string Concatenate(int number)
    {
        int count;
        string s = "";
        for (count = 0; count < number; count++)
        {
            s += "\n" + count.ToString();
        }
        return s;
    }
}

Çalışan rolünün RoleEntryPoint türetilmiş sınıfında RunAsync yönteminden bu kodu çağırın. (Zaman uyumlu olarak çalışan yöntemle ilgili uyarıyı yoksayın.)

private async Task RunAsync(CancellationToken cancellationToken)
{
    // TODO: Replace the following with your own logic.
    while (!cancellationToken.IsCancellationRequested)
    {
        Trace.TraceInformation("Working");
        Concatenator.Concatenate(10000);
    }
}

Çözüm yapılandırması Yayın olarak ayarlanmış şekilde bulut hizmetinizi hata ayıklamadan yerel olarak derleyin ve çalıştırın (Ctrl+F5). Bu, tüm dosya ve klasörlerin uygulamayı yerel olarak çalıştırmak için oluşturulmasını ve tüm öykünücülerin başlatılmasını sağlar. Çalışan rolünüzün çalıştığını doğrulamak için görev çubuğundan İşlem Öykünücüsü kullanıcı arabirimini başlatın.

2: İşleme ekleme

Visual Studio 2010 IDE'den başlatarak uygulamanın profilini oluşturmak yerine profil oluşturucuyu çalışan bir işleme eklemeniz gerekir.

Profil oluşturucuyu bir işleme eklemek için Çözümle menüsünde Profil Oluşturucu ve Ekle/Ayır'ı seçin.

Profil ekle seçeneği

Çalışan rolü için WaWorkerHost.exe işlemini bulun.

WaWorkerHost işlemi

Proje klasörünüz bir ağ sürücüsündeyse, profil oluşturucu profil oluşturma raporlarını kaydetmek için başka bir konum sağlamanızı ister.

Ayrıca, WaIISHost.exe ekleyerek bir web rolüne de ekleyebilirsiniz. Uygulamanızda birden çok çalışan rolü işlemi varsa bunları ayırt etmek için processID değerini kullanmanız gerekir. Process nesnesine erişerek processID'yi program aracılığıyla sorgulayabilirsiniz. Örneğin, bir roldeki RoleEntryPoint türetilmiş sınıfının Run yöntemine bu kodu eklerseniz, hangi işleme bağlanabileceğinizi öğrenmek için İşlem Öykünücüsü kullanıcı arabirimindeki günlüğe bakabilirsiniz.

var process = System.Diagnostics.Process.GetCurrentProcess();
var message = String.Format("Process ID: {0}", process.Id);
Trace.WriteLine(message, "Information");

Günlüğü görüntülemek için İşlem Öykünücüsü kullanıcı arabirimini başlatın.

İşlem Öykünücüsü kullanıcı arabirimini başlatma

Konsol penceresinin başlık çubuğuna tıklayarak İşlem Öykünücüsü kullanıcı arabiriminde çalışan rolü günlük konsolu penceresini açın. İşlem kimliğini günlükte görebilirsiniz.

İşlem kimliğini görüntüleme

Eklediğiniz senaryoyu yeniden oluşturmak için uygulamanızın kullanıcı arabirimindeki adımları (gerekirse) gerçekleştirin.

Profil oluşturmayı durdurmak istediğinizde Profil Oluşturmayı Durdur bağlantısını seçin.

Profil Oluşturmayı Durdur seçeneği

3: Performans raporlarını görüntüleme

Uygulamanızın performans raporu görüntülenir.

Bu noktada, profil oluşturucu yürütmeyi durdurur, verileri bir .vsp dosyasına kaydeder ve bu verilerin analizini gösteren bir rapor görüntüler.

Profil oluşturucu raporu

Sık Erişimli Yolda String.wstrcpy ifadesini görüyorsanız, görünümü yalnızca kullanıcı kodunu gösterecek şekilde değiştirmek için Yalnızca Kodum'a tıklayın. String.Concat ifadesini görüyorsanız Tüm Kodu Göster düğmesine basmayı deneyin.

Concatenate yönteminin ve String.Concat'in yürütme süresinin büyük bir bölümünü kapsadiğini görmeniz gerekir.

Raporun analizi

Bu makalede dize birleştirme kodunu eklediyseniz, bunun için Görev Listesi'nde bir uyarı görmeniz gerekir. Ayrıca, oluşturulan ve atılan dizelerin sayısından kaynaklanan aşırı miktarda çöp toplama olduğunu belirten bir uyarı da görebilirsiniz.

Performans uyarıları

4: Değişiklik yapma ve performansı karşılaştırma

Ayrıca, kod değişikliğinden önceki ve sonraki performansı karşılaştırabilirsiniz. Çalışan işlemi durdurun ve dize birleştirme işlemini StringBuilder kullanımıyla değiştirmek için kodu düzenleyin:

public static string Concatenate(int number)
{
    int count;
    System.Text.StringBuilder builder = new System.Text.StringBuilder("");
    for (count = 0; count < number; count++)
    {
        builder.Append("\n" + count.ToString());
    }
    return builder.ToString();
}

Başka bir performans çalıştırması yapın ve ardından performansı karşılaştırın. Performans Gezgini'nde çalıştırmalar aynı oturumdaysa her iki raporu da seçebilir, kısayol menüsünü açabilir ve Performans Raporlarını Karşılaştır'ı seçebilirsiniz. Başka bir performans oturumundaki bir çalıştırmayla karşılaştırmak istiyorsanız Çözümle menüsünü açın ve Performans Raporlarını Karşılaştır'ı seçin. Görüntülenen iletişim kutusunda her iki dosyayı da belirtin.

Performans raporlarını karşılaştır seçeneği

Raporlar iki çalıştırma arasındaki farkları vurgular.

Karşılaştırma raporu

Tebrikler! Profil oluşturucuyu kullanmaya başladınız.

Sorun giderme

  • Bir Yayın derlemesi profili oluşturduğunuzdan emin olun ve hata ayıklama olmadan başlayın.
  • Profil Oluşturucu menüsünde Ekle/Ayır seçeneği etkin değilse Performans Sihirbazı'nı çalıştırın.
  • Uygulamanızın durumunu görüntülemek için İşlem Öykünücüsü kullanıcı arabirimini kullanın.
  • Öykünücüde uygulamaları başlatırken veya profil oluşturucuyu eklerken sorun yaşıyorsanız işlem öykünücüsunu kapatın ve yeniden başlatın. Bu işlem sorunu çözmezse yeniden başlatmayı deneyin. Çalışan dağıtımları askıya almak ve kaldırmak için İşlem Öykünücüsü'yü kullanırsanız bu sorun oluşabilir.
  • Komut satırından profil oluşturma komutlarından herhangi birini, özellikle de genel ayarları kullandıysanız VSPerfClrEnv /globaloff'un çağrıldığından ve VsPerfMon.exe kapatıldığından emin olun.
  • Örnekleme sırasında "PRF0025: Veri toplanmadı" iletisini görürseniz, eklediğiniz işlemin CPU etkinliği olup olmadığını denetleyin. Herhangi bir hesaplama işi yapmayan uygulamalar herhangi bir örnekleme verisi üretmeyebilir. Herhangi bir örnekleme yapılmadan önce işlemden çıkılmış da olabilir. Profil oluşturduğunuz bir rolün Run yönteminin sonlandırılmadığını denetleyin.

Sonraki Adımlar

Öykünücüde Azure ikili dosyalarının izlemesi Visual Studio profil oluşturucuda desteklenmez, ancak bellek ayırmayı test etmek istiyorsanız profil oluştururken bu seçeneği belirleyebilirsiniz. Eşzamanlılık profili oluşturmayı da seçebilirsiniz. Bu, iş parçacıklarının kilitler için rekabet etmek için zaman kaybına neden olup olmadığını belirlemenize veya katman etkileşimi profil oluşturma özelliğinden faydalanarak bir uygulamanın katmanları arasında ve en sık veri katmanı ile çalışan rolü arasında etkileşim kurarken performans sorunlarını izlemenize yardımcı olur. Uygulamanızın oluşturduğu veritabanı sorgularını görüntüleyebilir ve veritabanı kullanımınızı geliştirmek için profil oluşturma verilerini kullanabilirsiniz. Katman etkileşimi profili oluşturma hakkında bilgi için , İzlenecek Yol: Visual Studio Team System 2010'da Katman Etkileşimi Profil Oluşturucu'yu Kullanma blog gönderisine bakın.