SORU
23 AĞUSTOS 2008, CUMARTESİ


Yüksek-yük bir site içinde PHP kullanma taktikleri

Buna cevap vermeden önce bir şeyi asla yüksek sunucu yükleri ulaşmak için yeterince popüler geliştirdim. PHP ve birkaç optimizasyon teknikleri bilen biri olsa (nefes) bir yabancı gezegen üzerinde iniş yaptığı gibi beni tedavi.


Bir araç olarak geliştiriyorumPHPeğer doğru çalışırsa kullanıcıları oldukça çok şey elde edebilir. Büyük bir trafik ile başa çıkabilmek için bir şeyler yapma konusunda çok fazla bilgim yok program geliştirme beceririm ancak. İşte birkaç soru (kaynak iplik bu soruyu açmak için çekinmeyin).

Veritabanları

Şu anda PHP5 MySQLi özellikleri kullanmayı planlıyorum. Ancak ne kadar kullanıcılar için kurulum ile ilgili veritabanları ve içerik gerekir? Aslında yapmamgerekbirden çok veritabanı? Her şey tek bir kullanıcı veri yayılıyor düşünüyordum, ancak bir veritabanı içine karışık - an, başka bir gerçek içerik ve sonunda çekirdek içerik (şablon ustaları vb.) başka. Bunun arkasında benim akıl farklı veritabanına sorgulama göndermek = 3 yük kaynaklardan bir veritabanı olarak üzerindeki yükü hafifletmek. Ayrıca bu yine de eğer aynı sunucuda olsaydı etkili olurdu?

Önbelleğe alma

Sayfalar oluşturmak ve değişkenleri takas için kullanılan bir şablon sistemi var. Ana şablonları veritabanında saklanır ve bir şablon önbelleğe alınan kopya denir her zaman (html belgesi) denir. Şu anda bu şablonlar, değişken - statik var ve bir dinamik var iki tür var. Statik değişkenleri genellikle sayfa adları, sitenin adı genellikle değişmez şeyler gibi şeyler vardır; dinamik değişkenleri her sayfa yük değişiklik şeylerdir.

Bu konuda sorum şu:

Farklı makaleler yorum var. Hangisi daha iyi bir çözüm: mağaza basit yorum ve şablon oluşturma yorumlar (gelen bir çağrı DB) her sayfa yüklendiğinde veya bir mağaza önbelleğe alınan kopya yorumları sayfa olarak bir html sayfası - her zaman bir yorumdur eklenen/düzenlenen/silinmiş sayfa recached.

Nihayet

Herkes PHP üzerinde çok yük bir site çalıştırmak için herhangi bir ipucu/püf noktası var mı. İşe yarar bir dil kullanın - Facebook ve Yahoo eminim! bu büyük önceliği - ama dikkat etmeliyim herhangi bir deneyimleri var mı?

CEVAP
23 AĞUSTOS 2008, CUMARTESİ


Hayır iki site birbirine benzer. Gerçekten jmeter ve kıyaslama gibi bir araç sorun noktaları nerede olacağını görmek lazım. Çok zaman tahmin ve iyileştirilmesi geçirebilirsiniz, ama ölçü ve değişiklikleri karşılaştırmak kadar gerçek sonuçlar Göremezsiniz.

Yıllardır, örneğin, MySQL sorgu önbellek performans tüm sorunlarımıza çözüm oldu. Eğer siteniz yavaş ise, uzmanlar MySQL sorgu önbelleği açmayı önerdi. Eğer bir yüksek yük yazma önbelleği gerçekten sakat olduğu ortaya çıktı. Eğer üzerinde test etmeden çıkarsan, asla bilemezsiniz.

Ve yaptıklarını asla unutmayın Ölçekleme. 10req/s işleyen bir site 1000req/s desteklemek için değişiklikler gerekebilir. Ve eğer/s 10,000 talep destek için ihtiyacımız lucking yeterince iyi olursan, mimarlık muhtemelen tamamen farklı görünecek.

Veritabanları

  • -- PDO MySQLi kullanmayın 'modern' veritabanı Erişim Katmanı OO. En önemli özelliği, sorgularda yer tutucuları. Sizin için sunucu tarafı hazırlar ve diğer iyileştirme olarak kullanmak için yeterince akıllı.
  • Muhtemelen bir veritabanı bu noktada ayrılmak istemiyorum. Eğer bir veritabanı kesme olmadığını bulursanız, app bağlı olarak büyütmek için çeşitli teknikler vardır. Ek sunuculara çoğaltma genellikle iyi eğer daha fazla okur daha varsa çalışır. Sharding birçok makine üzerinden veri bölmek için bir tekniktir.

Önbelleğe alma

  • Muhtemelen senin veritabanı önbelleği için istemiyorum. Veritabanı genellikle engel teşkil eden, daha IO'NUN ekleme genellikle kötü bir şey olsun. APC benzer şeyler başarmak ve Çalışabilir orada birçok PHP önbelleğe vardır.
  • Ve önbelleği ile sisteminizi ölçün. Önbelleğinizi düz sayfalar porsiyon daha ağır olduğuna bahse girerim.
  • Eğer uzun bir süre yorumlarınızı ve db makalede veri oluşturmak için gereken, sistem memcache entegre. Sorgu sonuçlarını önbelleğe ve memcached bir örneği olarak saklayabilirsiniz. Önemli memcache veri alma herhangi bir fayda görmek için veritabanından montaj daha hızlı olması gerektiğini unutmayın.
  • Makaleler dinamik değil, ya da üretilen sonra basit dinamik değişiklikler varsa, diske html veya php yazarken düşünün. Makale için diskte görünüyor index.php bir sayfa olabilir, eğer öyle bir şey varsa, o istemciye akışı. Eğer değil ise, madde üretir, diske yazar ve istemciye gönderir. Diskten dosya silme sayfaları yeniden yazılmasına neden olur. Eğer bir yorum bir madde eklenirse, sil önbelleğe alınan kopya -- rejenere olur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Android Developers

    Android Deve

    9 Kasım 2007
  • bcbauer

    bcbauer

    7 ŞUBAT 2007
  • Megan Parken

    Megan Parken

    19 Temmuz 2009