Bir web uygulamasında darboğazları bulmak için yolları nelerdir?

10 Cevap php

Nasıl Benchmark benim web uygulamalarının performansını do?

Bir web uygulamasında darboğazları bulmak için bir yolu var mı?

EDIT: Ne bilmek istiyorum ben performansını artırmak için değiştirmek için hangi yöntemler / sorgular bilecek böylece uygulamanın arka uç profil nasıl css vb görüntüler, gibi herhangi bir ön uç tweaks soruyor değilim.

10 Cevap

Uygulama sunucusunda darboğazları ilgili, PHP vb için, bir profiling tool kadar zaman her kod parçası nasıl harcandığını görmek, ne kadar bellek kullanılır kullanabilirsiniz, webgrind profilleme popüler, GUI tabanlı bir yol gibi görünüyor. Gibi bir şey dotTrace bir ASP.NET uygulaması için aynı şeyi yapardı. why onlar yavaş edilmez - bu veritabanlarına gelince, böyle profilleme araçları sadece veritabanı sorgularını yavaş hangi gösterecektir unutmayın. Bunun için, veritabanı özel profil içine bakmak gerekiyordu ...

Web uygulaması darboğazları başka yönü aslında her şeyi (CSS ve JavaScript ithalatı, görüntüler, vb) downlad ve sayfayı oluşturmak için bir tarayıcı gereken ne kadar zaman. , Tüm dünyada sitenizden vurmak performansını analiz ve size app {[(1 çıkışını almak için yapabilirsiniz değişiklikler hakkında öneriler verecektir botlara Keynote gibi birkaç şirket var )]} (örneğin, "kullanım gzip sıkıştırma ve sayfanın sonunda yerine başında sizin JavaScript koymak", vb.) Ayrıca tabii ki, çok daha küçük bir ölçekte bu yourslelf yapabilirsiniz. Örneğin, Firefox eklentileri Jiffy ve YSlow iş yapacak gibi.

Tracing harika bir başlangıç

Fiddler trafik kaydı ve izlenmesi için iyi bir araçtır. Bu istemci üzerinde çalışır ve talepleri ve cevapları istemci ve web sunucusu arasında gidip görebilirsiniz. Kolayca yavaş sayfaları analiz ve (birçok istekleri, büyük bir sayfa, ...) nedenleri algılayabilir

Özellikle ASP.Net için, web uygulamaları için ayrıntılı günlüğü oluşturabilir izleme mekanizması bulunmamaktadır. Bilgi zamanlama gösterileri oturum ve uzun süren fonksiyonları bulabilirsiniz. (MSDN makalesine: ASP.NET Tracing Overview

Eğer Perl kullanıyorsanız o Devel::NYTProf olan super amazing.

Ben OSCON birkaç kez yaptık, bir öğretici ve "Real World Web: Performance & Scalability" hakkında konferans MySQL (mevcut slaytlar in PDF), bu ilginç bulabilirsiniz var.

Eğer platformu (XP, Vista, Server 2000, 2003, 2008) ve uygulama (IIS, Windows Service) çalışan yöntemi hakkında daha spesifik olabilir. Izleme Yukarıda belirtildiği gibi, iyi bir başlangıç ​​ama web uygulaması gibi iyi yapılandırılmış ortamına bağlı olarak diğer araçları vardır.

Bir web uygulaması ve yöntemleri ateş başında ve sonunda iz tablolara koyarsanız doğru iz özelliği, iz = açın. Bu size çok ayrıntılı bir sistem içinde kene okunmasına ve dolayısıyla ne kadar her parça çalıştırmak için gereken verecektir.

Aradığınız bir kütüphane varsa, o zaman da bakmak gerekir ne çıktı httpcontext.Current.Trace.Write kullanarak içinde iz yapabilir. App gerçekten titiz Alternatif eğer paylaşılan bir değişken olarak iz ifadeleri depolamak ve komut çalıştırmak sonra bir DB veya başka bir mekanizma ile bunu yazmak için kendi işlevi yazabilirsiniz.

Başvurunuzu stres gibi PHPUnit gibi bazı test motorlarını kullanmayı deneyin, ve çözmek için uzun sürüyor ne işlem görmek için kabuk kullanın.

Unix / Linux size 'üst' komutunu kullanabilirsiniz

Windows görev yöneticisini kullanın (genişletilmiş)

Eğer darboğazları bulmak için genel bir yol istiyorsanız, bir HTTP izleme aracını kullanmayı deneyin. Bu uzun süren isteklerin ne tür görmek için izin verir, ya da hata mesajları dönmek durumunda. Daha sonra aracından verilere dayalı uygulamanın belirli alanlarda sıfır bir platforma özel profil aracını kullanabilirsiniz.

Ben analizi bu tür yapmak için Charles gibi bir HTTP proxy aracını kullanarak gibi.

İlk adım, kirli hızlı-ve-olduğunu. IPhone, 3G bağlantısı, uydu internet bağlantısı olan bir bilgisayar ve bir windows mobil PDA ile bir dizüstü bilgisayar üzerinde deneyin. Eğer bu çalışırsa, bitirdiniz. Değilse, üçgen.