Archive

Posts Tagged ‘performance’

<Öneriler>

microsoft web Microsoft web gallery incelemeniz gereken bir Microsoft hizmeti. Deneme sürümlerinin yer aldığı bu ürün galerisinde ücretsiz olarak kullanılabilecek ve web uygulamalarını kullanışlı kılabilecek uygulamalar mevcut.

Microsoft/web

Profiling konusuna paralel sayılabilecek olan web uygulamalarında güvenlik aşaması için oldukça güzel bir liste ; 10 Ücretsiz web güvenlik kontrolü aracı

netsparker İçinde türk firmasına ait olan netsparker Netsparker Community Edition ‘inda yer aldığı bu 10 araçla birlikte Internet uygulamanız için güvenlik taramalarınızı yapmanız ve önlemlerinizi almanız mümkün.

Unit test konusunun JavaScript için uyarlanışı ve yardımcı bir araç; Qunit
http://net.tutsplus.com/tutorials/javascript-ajax/how-to-test-your-javascript-code-with-qunit/

.Net uygulamaları için kullanabileceğiniz ücretisz bir dependency injector; Ninject.

Asp.net Application Profiling –4-

image Seri içerisindeki kullanışlı profiler araçlarından biri olan redgate developer bundle içerisinde yer alan profiler araçlarına göz atmak istiyorum. Sonuçları snapshot ekranında bir arada sunulsa da ayrı olarak nedir bu araçlar; Performans Profiler, Memory Profiler, Exception Hunter.

Programın ilk göze çarpan dezavantajı kurulumun uzun sürmesi ve seçenek dahilinde olmamasına karşın j# ve C++ eklentilerini de kurması.

image Ama bu eksisini ilk açılış ekranında karşılayan başlangıç sihirbazıyla bir nevi artıya çevirmeyi başarmışlar. Açılan bu sihirbaz yardımıyla önceki profiling araçlarındaki sihirbaz anlaşılırlığı sorunu ortadan kaldırılmış. Asp.net IIS ya da web development server seçeneği olarak iki ayrı seçenekte sunulan asp.net profiling seçeneğinden IIS versiyonunu seçerek profiling işlemleri için gerekli adres tanımlarını yapıyoruz.

Adres tanımlarını yaparken göreceğimiz üzere Default IIS portu ya da sanal bir port seçmek mümkün. Bu özellikle birlikte programı administrator accountuyla başlatma zorunlulu ve iisreset zorunluluğu ortadan kaldırılmış. Kişisel bilgisayarlarda yapılan testler için sorun olmasa da üzerinde birçok uygulama çalışan bir serverda yapılması planlanacak bir test için oldukça sorunlu bir aşamadır iisreset.

image image

Profiling işlemi başladıktan sonra gerçeğe yakın bir sonuç alınması için backgorundda çalışan program uygulamanızı izliyor ve istediğiniz anda take a snapshot seçeneğiyle o ana kadar gerçekleşmiş işlem haritasını size sunuyor.

Sunduğu monitörde detaylı bir şekilde uygulama içerisinde kapasite olarak en çok yer kaplayan classları, Classlara göre instance sayılarını, bu instancelarin memoryde kapladığı alanları ayrı ayrı görmek mümkün. Test olarak sunduğum projede 1 milyon countlu bir foreach döngüsü içerisinde string işlemleri yaptırmaktayım. Bu yüzden görüleceği üzere memory kullanımı konusunda string objeleri ilk sırada yer alıyor. String kullanımı esnasında create edilen instancelar çağırılan referans assemblyler de listede incelenebilir durumda.

 

image

image
image

Asp.net Application Profiling –3-

imageAsp.Net Profiling ve debugging serisinde bu hafta .Net Memory Profiler i inceliyoruz. Memory profiler adından da anlaşılacağı üzere memory kullanımına odaklanmış bir profiler aracıdır. Kurulumu ve kullanımı oldukça kolaylaştıran bir arayüz mekanızmasına sahip olan Memory Profileri Visual Studio integration modunu kurarak WebDevServer la birlikte çalıştırabileceğiniz gibi ayrı olarak IIS uzerinden çağırılan Asp.Net uygulamaları için de çalıştırmak mümkündür.

Kurulumu tamamladıktan sonra açılacak olan ekranda Profile Projects Explorer yardımıyla yeni bir profile projesi eklemek ilk adımımız olacak. New Profile Project dediğimizde göreceğimiz üzere Asp.Net uygulamaları yanında windows service, wpf uygulamaları gibi uygulamaları da profile etmemiz mümkün. Ancak bizim üzerinde durduğumuz kısım Asp.Net uygulamaları olduğu için bu seçeneği seçerek ilerliyoruz.

image image

Ilerlediğimizde karşımızı çıkan ekranda Development server ya da IIS kullanımı seçeneğine göre iki ayrı konfigürasyon seçeneğini listeleniyor. Seçimimize göre buradaki ayarları yaparak bir sonraki aşamaya geçiyoruz. Bir sonraki adımla birlikte profiling işlemi sonrasında sunulacak olan snapshotta yer alması mümkün seçenekler sıralanıyor ve Aktif\Deaktif edilerek en işlevsel görünüm oluşturuluyor.

image Decide on the dispose tracker – Dispose edilebilen yani memoryden kaldırılabilen instancelarla ilgili bilgileri tutulduğu rapor seçeneğidir.

image Decide real time data collection – Bu seçenekle birlikte uygulamanın gerçek datayla çalıştırılma performansı gerçeğe en yakın olarak izlenmiş olur ve bu süreçteki memorynin performansı rapor edilir.

image Decide on instance data collection – Instancelara ait detay bilgilerin rapor edilmesini sağlar.

image Decide on the heap utilization tracker – Heap olarak adlandırılan ve uygulamamıza özel olarak memoryde ayrışmış kısmın nasıl ymnetildiğini gözlemleyebileceğimiz rapor kısmıdır.

image Decide on the unmanaged resource tracker – Bizim kontrolümüz haricindeki memory kullanımı.

image Bu ayarlar yapılıp kısa bir overview\kısa bir bakış sunulduktan sonra profile uygulamasını çalıştırma ekranı karşmıza çıkacaktır. Burada son değişiklikleri yaptıktan sonra profiling işlemi başlatılır. Dikkat edilmesi gereken nokta eğer Windows 7 kullanıcısıysanız IIS restart işlemini barındıran bir işlem olduğu için .Net Memory Profiler in run as administrator seçeneğiyle başlatılmış olması gerekmektedir. Eğer bu şekilde başlatmamışsanız ayarlarınızı kaydedip Profiler i kapatıp admin hakkıyla tekrar başlatabilirsiniz.

image

IIS restart edilip Profile edilecek olan uygulama başlatıldıktan sonra Memory izleme işlemlerini tamamlaması kısa bir süre alacaktır. Eğer instance data collection özelliği seçilmişse bu sürenin biraz daha uzaması olasıdır. İşlem tamamlandıktan sonra snapshot i görüntülemek için project explorerda test uygulamamız altında görüntülenecek olan geçerli snapshot i seçmemiz yeterlidir. Bu snapshot yardımıyla görüntüleyeceğimiz ekranda uygulamamız ve memoryle ilişkili gerçekleşen tüm aktivitelerin aldığı zamanı işgal ettiği memory değerlerini monitor edebilir ve istenmeyen durumları düzeltme şansı bulabiliriz.

imageimage

Asp.net Application Profiling –2-

Asp.net uygulamalarının performansının ölçülmesi\profiling serimize jet brains in Dot Trace ürünüyle devam ediyoruz. Visual studio 2008 ve 2010 uyumlu olan dot trace uygulamasını 2008 versiyonuyla uyumlu olacak şekilde kurmanızı tavsiye ediyorum.

image

Dot trace kolay anlaşılır bir kuruluma ve ara yüze sahip. En büyük kolaylık sayılabilecek özelliğiyse uzak bir bilgisayara erişim imkanı sunması ve smart device profiling işlemlerine izin vermesi. Uygulamaların kendi bilgisayarımızda host edilmesi zorunluluğunda kurtarmış olması ve de git gide önem kazanan smart device uygulamalarına da olanak sağlaması oldukça önemli noktalar.

image

Yeni bir profile sekmesi açarak Asp.Net uygulaması için izleme işlemimizdeki ilk adımı atmış oluyoruz. Burada açılacak ekranda profiling ekranında görmek istediğiniz thread detaylarını seçebilirsiniz.

 

imageProfiler Options sekmesindeki profiling özelliğini Tracing olarak seçip CLR(Common Language Runtime) aşamasındaki işlemleri izlemek için gerekli ayarları yapmış oluyoruz. Diğer seçeneklerse tamamen izlenen geçerli threadlein ne şekilde listeleneceğine yönelik şekil odaklı özellikler. Bu özellikleri threadların ne şekilde listelenmesini istediğinize göre değiştirebilirsiniz. Detaylı bir inceleme yapmak ve isimleri tamamiyle görmek için High accuracy ve Stem threads with equal names seçeneklerini işaretliyorum.

 

Gerekli ayarları yapıp onayladıktan sonra otomatik olarak profiling işlemini kontrol eden ek bir pencere açıldığını görüyoruz. Bu ekran profile edeceğimiz iis uygulamasının internet explorerdan çağırılmasını bekleyen Profile yönetim ekranıdır. IIS uygulamamızı çağırdıktan sonra üzerindeki deaktif butonların kullanılabilir olduguğunu gözlemleyeceğiz. Aktif olan bu seçeneklerden Get Snapshot yardımıyla IIS uygulamamızın thread sonuçlarını işlem sürelerini istek\cevap sonuçlarını listelememiz mümkündür.

 imageimage

Get Snapshot diyerek açacağımız sonuç ekranında Overview modunda genel yapıya göz atabileceğimiz gibi thread three, hot spot gibi modlar yardımıyla listeyi gözden geçirebiliriz.

image

Asp.net Application Profiling

Birçoğumuzun gözden kaçırdığı, kaçırmasa da yapmayı ötelediği işlemlere göz atıyorum bu aralar. Yazılmış kodların ya da çalışır bir sistemin profile edilmesi hızlı gelişen süreçler dahilinde lüks olarak nitelense de ayrılacak kısa süreler umulmadık çözümlere ulaştırabilir problemleri, gereksinimleri.
İşte bu gereksinimlerin öneminden yola çıkarak Profiling ve Monitoring araçlarını incelemeye çalışacağım kısa kısa.

İlk incelemek istediğim araç AutomatedQA adlı bir firmaya ait olan AQtime adlı bir uygulama. Performans image üzerine ürünler geliştiren bu firmanın AQtime ürününde hedeflenen performansa etki eden işlemleri izlemek ve memory kullanımını debug etmek. Ayrı olarak kullanılabildiği gibi Visual Studio içinden de kullanmak mümkündür. Deneme sürümünde her visual studio başlangıcında deneme sürümü confirmasyonu alması bir süre can sıkıcı gelebilir.

Native code için profile ve debug imkanı da veren bu uygulamada yapılandırmamızı asp.net uygulaması için yapıyor olacağız.

Asp.Net uygulamamızı Visual Studio 2005\2008 içerisinde açtıktan sonra proje özelliklerinden Build menüsü yardımıyla Debug işlemleri için Optimize Code seçeneğinin seçili olmadığından emin olalım. Bu seçimden emin olduktan sonra projeyi tekrar compile edelim.

Test edebilmek amacıyla basit birkaç for döngüsü kullanacağım bir web application oluşturdum. Bu web application in öncelikle iis e application olarak tanımlamamız ve virtual bir path vermemiz gerekli.

imageTest uygulamasıyla ilgili IIS yapılandırmasından sonra AQTime yapısına baktığımızda New Project seçeneğiyle yeni bir profiler projesi başlatıyoruz. Açılan bu projeyi IIS teki test sitemizle konuşturmak için bin folderı altındaki web uygulaması için assembly dll’ ini sol navigasyon menüsündeki Add Module seçeneğiyle projeye ekliyoruz. 

Öncelikle test etmek ve izlemek istediğimiz uygulama Asp.Net uygulaması olduğu için Asp.Net modunu  seçiyoruz. image

Profile etmek istediğimiz aşamaları area alanından seçerek profiling işlemini başlatıyoruz. (Ingilizce bir kelimeye etmek fiili ekleyerek türkçeleştirmek en sevmediğim kullanımlardan biridir aslında ama profiling türkçe olarak daha mantıklı bir şekilde çeviremedim)

image

Run dedikten sonra karşınıza bir pencere daha çıkacaktır ve bu pencereden hangi işlemleri Runtime işlemlerini mi sonrasını mı vs izleme aşamalarını seçebilirsiniz.

image

Bu seçimi de yaptıktan sonra ayarların tamam olduğunu ve IIS uygulamasının başlatılmasının beklendiğini gösteren bir uyari göreceksiniz. Bu uyarıyla birlikte IIS uygulamasını Internet Explorerdan çağırmak AQtime ı aktif etmek ve izleme işlemine başlamak için yeterli.

 image

Profiling esnasında uygulamanızda neler olup bittiğini hangi modullerin kaç saniyede ayaklandırıldığını sistemin nerelere eriştiğini erişemediğini monitor penceresinden izleyebilirsiniz.

image

Proje süreçlerinde zaman alması bakımından çokta üzerinde durulmaya ama zaman zaman harcanan zamanı kat kat fazlasını kazandıran işlemler olan Profiling ve Performans aşamalarındaki araçları incelemeye devam edeceğim.