Nasıl kriter php / mysql sitesi için

7 Cevap php

Ben nasıl kriter php / mysql sitesi bilmek istiyorum.

Biz, bir web uygulaması neredeyse tamamlanmış ve canlı gitmek için hazır olması bir yıl içinde bunu kullanarak olacak kaç kişi biliyor ama ortalama kullanıcı onlar kadar yakmak ne kadar zaman alır, ne kadar bant genişliği kesinlikle hiçbir fikrim yok veritabanı vb Biz satın almak için doğru sunucularını belirlemek gerekir.

Kullanıcı başına bu istatistikleri izleyebilirsiniz şey sunucu tarafı linux var mı? Biz daha sonra bu verileri almak ve tahmin böylece?

Bu tamamen yanlış hakkında gidiyorum varsa bana bildirin ama ben bu yeni web uygulamaları için sık sık etkinlik olduğuna inanıyorum lütfen.

EDIT: Ben yanlış bilgi istemiş olabilir. Biz sayfasını yüklemek için ne kadar sürer veritabanı sorguları almaya ve ne kadar görmek ama sunucuya yerleştirilir ne yük hiçbir fikrim yok olabilir. Soruyorum sorusu ... 1000 ortalama seferde 100 kullanıcıları işleyebilir? Sunucu gereksinimleri ne tür 1M kullanıcıları vurmak için gereklidir. Vb

Yardımlarınız için teşekkürler.

7 Cevap

Oldukça yararlı bir araçtır jmeter (ki bu en temel var da) o zaman her web sitesi etrafında dolaşmak ve bunu her şeyi kaydeder bir vekil olarak JMeter kullanmak için tarayıcınızı ayarlamanızı sağlar.

Eğer daha sonra JMeter içinde test kaydedin ve konuları bir dizi dizi ve web sitenize yük simülasyonu için diş başına döngüler bir dizi ile testini çalıştırmak için bunu söyleyebilirim web sitenizin en iyi bir sınav olduğunu mutluyuz kez.

Örneğin Testplan 10 kez çalıştıran 50 müşterilerine her çalıştırabilirsiniz.

Daha sonra bu sitede, sizin için tepki süresini grafikler olan performans etkisini görmek için yukarı ve aşağı numaralarını rampa.

Bu size ayar farklı parametreler sağlar, farklı önbelleğe alma stratejileri deneyin ve bu değişikliklerin gerçek dünya etkisini kontrol edin.

You can use ApacheBench tool (ab, usually a part of apache web-server package) for stress-testing(1k requests with 10 clients = ab -c 10 -n 1000 http://url) of script, that you suspect could be slow enough. It will show you the distribution of response times (in 90% cases request processed in less than 200msec).

Ayrıca, belirli bir komut dosyası tarafından yürütülen SQL sorguları kapmak ve onları tablolarında 10-100-10mln kat daha fazla kayıt olacak zaman nasıl düşer bir fikir edinmek için "planını açıklamak" yok daha.

Eğer byte (günlük doğrultusunda son numaralardan birini) gönderdi favori tarayıcısı kullanmak ve tipik bir kullanıcı ziyaret taklit, erisim.log dosya ve toplamı alabilir - bu nasıl hizmet edebiliriz birçok kullanıcı ile ilgili. Örneğin bu 5kb text / html 50 oldu kb png / jpg / etc. = Kullanıcı ziyareti başına 55kb. Artı başlıkları / etc en 60kb ziyaret başına * 1m = 60GB trafik gün başına diyelim. Bant genişliği bunun için yeterince iyi mi? (60gb/86.4ksec = 700kb/sec).

Bir heavyweight framework or something like that kullandığınız sürece, DB sorguları app yavaş parçası olması muhtemeldir.

Ne izlenmesi için yapmak benim DB soyutlama nesne her sorgu için önlem yürütme zamanı. Sonra, uzun X milisaniye daha uzun sürer her sorgu için (kendi X doldurun), ben sorgu (göründü hangi PHP komut dosyası ve satır numarası tanımlayan benim sorgu günlük dosyasına bir satır yazmak kullanım {[(0)] } birlikte diğer ilgili bağlam veriler (örneğin kullanıcı kimliği, tarih-saat vs)) bu bilgileri bulmak için.

Bu günlük dosyası, istatistiksel çeşitli bilgi için daha sonra analiz edilebilir.

Örneğin, (sunucu yükü ile ilgili) büyük toplam zaman alıyor sorguları hangi bulabilirsiniz. Veya (ki kullanıcı deneyimi ile ilgili) yavaş vardır. Ya da hangi kullanıcı en (belki istismar veya robotlar) sistemi yükleniyor.

Ben de benim sorgu optimizasyon çaba harcamak nerede iyi belirlemek için Pareto grafikleri çizmek.

Bu http://code.google.com/p/dbench kullanarak deneyebilirsiniz

Çoğu importanly, size performans olmak istiyorum ne tanımlamak gerekir: always optimize alanları bulabilirsiniz. Ancak, 750ms gelen 650ms için tepki süresini iyileştirmek zaman değer olmayabilir.

Fsb dediği gibi, sizin darboğazlar muhtemelen veritabanı sorguları olacaktır. Olduklarını düşünüyorum nerede Ancak, ben de senin darboğazlar her zaman (hatta muhtemelen) olmadığını belirliyor. I this İlk okuma öneririm, ve sitenizin küresel bir test yapmak istiyorum.

Bu uygulama ise, PHP kod profil XDebug kullanın. Sonra çıkışını analiz WinCacheGrind veya KCacheGrind kullanın. Bu sizi şaşırtabilir.

Veritabanı sorunları çözmek için, oldukça veritabanı özgüdür. MySQL için, ben, yavaş sorgu günlüğüne açmak endeksleri kullanılarak değil sorgular log, sorgu günlüğü etkinleştirmek ve Maatkit gibi kullanım araçlarında sorguları analiz ve darboğazları bulmak için.

Geçenlerde benchmark testi için, kolayca test ve bir rapor oluşturmak için bir PHP bileşeni geliştirdik. Ben de test değil nedeniyle gerginlik test önemini göstermektedir benchmark testiyle, önemi hakkında bir makale yayınlamış olduğunuz web sunucu üzerinde neden olabilir. Benchmark testi son derece önemli olduğunu, ama bu gün ve yaş insanlar gerçekte bu kontrol listesinin üst olmalıdır zaman, unutma eğiliminde olduğunu düşünüyorum. Hata denetimi, güvenlik kontrol, sonra Benchmark testi.

Bu sırayla.

http://www.binpress.com/app/benchmark-testing-framework/534?ad=1229 - The framework I've developed http://www.binpress.com/blog/2011/08/04/the-important-of-benchmark-testing/?ad=1229 - The article I wrote

Ben kıyaslama araçları ile herhangi bir deneyimi yok ama bazı durumlarda ben alanlara id, ipaddress, parsetime, {[(3)] ile basit bir tablo oluşturmak }. Sadece yeni bir satır, bir sayfa yenileniyor ya da (ajax durumlarda) çağrılır her zaman takın. Sonra bir hafta / ay / çeyrek / yıl toplanan verileri analiz. Onun değil, tercih edilen bir durum ama kısa bir sürede bazı istatistikleri almak için basit bir yol.

Some results on PHP benchmarks: http://www.google.nl/search?hl=nl&source=hp&q=php+benchmark&meta=&aq=f&oq=