Başlatmak gün trafik patlaması dayanabilen için en iyi uygulamalar

7 Cevap php

Biz (bir kez) bir günde trafik adil bir miktar almak için beklenen bir istemci için bir web sitesi üzerinde çalışıyoruz. Basın bültenleri ben biz bir gün bizim yüzünde düz düşmek için gidiyoruz biraz endişe duyuyorum insanlar, vb bu konuda blogging vardır. Eğer büyük bir lansman sonra ayakta kalabilirler siz (gerçek trafik veri olmadan önceden) sağlamak için bakmak istiyorum ana şeyler nelerdir.

Ayrıntılar: Bu bir dahili olarak geliştirilen MVC framework kullanarak, bir L / A / M / PHP yığını. Bu şu anda Apache ve MySQL hem de üzerinde olan bir sunucuda başlatılan ediliyor, ancak ihtiyaç olursa biz o kadar zarar verebilir. Biz zaten memcached yükleme ve aklınıza gelebilecek kadar PHP-seviye önbelleğe alma yapıyoruz. Bazı sayfalar oldukça yoğun sorgulamak, ve bizim şablon motoru olarak Smarty kullanıyor. Bu önemli yönlerinden herhangi birini değiştirmek için hiçbir zaman akılda tutmak - bu sadece kurulum. Şeyler biz ne tür için dikkat etmelidir?

7 Cevap

Performansı hazırlamak veya bir başak (veya tepe) işlemek için, ben ilk önce jmeter gibi bir şey ile bazı basit performans testleri ile hazır olup olmadığını belirlemek olacaktır.

Bu kurulumu kolay ve başlamak ve size beklenen bir pik yük idare edip erken ölçümleri verecektir.

Ancak zaman kısıtlamaları dikkate almak için başka adımlar (sizin başlatma gün eğer böyle basın bültenleri gibi) en yüksek ilgisini çekecek içerik statik sürümlerini hazırlamak olacaktır. Ayrıca istemci tarafında önbelleğe alma (sunucuya 1 daha az istek tüm fark yaratabilir) en iyi şekilde yapıyoruz emin olun. Web zaten son derece yüksek ölçeklenebilirlik için tasarlanmıştır ve etkin kullanımı içerik önbelleğe bu durumlarda en iyi arkadaşım.

Işler sakinleştirmeye zaman software engineering radio on the design of the new Guardian website yüksek ölçeklenebilirlik mükemmel bir podcast var.

başlatılması üzerine iyi şanslar

İlk Tedbir, sonra optimize. Herhangi loadtesting yaptın mı? Nerede darboğazları nelerdir?

Eğer darboğazları öğrendikten sonra ek DB kutuları veya web kutularını gerekiyorsa o zaman akıllıca şu anda sadece tahmin olurdu, karar verebilir.

Ayrıca, nasıl loadtesting sonuçlarınız beklenen trafik karşı karşılaştırılır? Eğer beklenen trafik 2x ele miyim? 5x? Ne kadar kolay / hızlı elde & edebilirsiniz Ekstra donanım serbest? Yük stabilize ve size ne gerek biliyorum ben iş gereksinimi lansmanı sırasında başarısız, bu yüzden emin lots, mevcut kapasite sahip yapmak değil eminim, her zaman sonradan serbest bırakabilirsiniz.

Ben en azından bütün statik içeriği faktör olacaktır. Kurulum başka bir yerde başka bir vhost ve bunun üzerine tüm grafik / / js css yükleyin. Eğer içerik bu tür porsiyon devrederek bazı ekstra döngüleri satın alabilirsiniz. Sizin gerçekten endişe Eğer kayıt olun ve bir içerik dağıtım hizmetini kullanabilirsiniz. Birçok şimdi Akamai benzer ve oldukça ucuz vardır.

Başka bir fikir zaman belirli bir süre için oluşturulan sayfa çıktı tutmak için apache mod_proxy kullanmak olabilir. APC de oldukça kullanışlı olurdu .. Siz çıkış tamponlama yakalama + sayfada ilgili verilerin son değişiklik zamanını istihdam ve APC önbelleğe sürümünü kullanabilirsiniz. Sayfa artık geçerli değil ise, yeniden ve yeniden APC saklamak.

İyi şanslar, bir öğrenme deneyimi olacak!

Eğer, idare sitenizin performansını ölçmek, canlı gitmeden önce hata çalışmak olabilir gibi birçok kullanıcı olarak bir izin bir beta dönemi var.

Sen ya da açıkça bir özel beta kullanıcıların sayısını, ya da her kullanıcının kendi arkadaşlarına sunabilir tavsiyelerin bir numarası olan bir Google tarzı yarı-kamu beta kontrol edebilirsiniz.

Ben, şahsen, bir kaç şey yaparım

1) Yük dengeleyici / veritabanı çoğaltma sistemi çeşit koyun

Bu, birden çok sunucu arasında servis yayılmış olabileceği anlamına gelir. Kalıcı olarak birden fazla sunucu için göze alamaz? Amazon E3 kullanın - Bu (yükü işlemek için birkaç sunucularda geçiş) bu gibi şeyler için yerine koymak için iyi

Bazı "Yüksek yük" kısıtlamalar 2) Code

Örneğin, arama verimsiz ise - yük belli bir seviyeye geldiğinde kapatın. "Üzgünüm, daha sonra arama için tekrar deneyin, meşgulüz"

3) Yük testi ... ApacheBench sizin sunucuları test stres gibi bir şey kullanın.

4) Şahsen ben "Keep-Alive" Bağlantıları kapatarak daha iyi olduğunu düşünüyorum. Bu biraz genel performansını düşürebilir, ama olabilir - o seviyeye geldiğinde eğer yerine site birkaç kişi için iyi çalışır, ve diğerleri zaman aşımı olsun bir şey kalmadan, herkes, tutarsız hizmet alır demektir

Linux Format Ben geçmişte yararlı buldum ... "Bir slashdotting hayatta nasıl" iyi bir makale yaptı. It available online as a PDF

Temel İlk Adımlar yüksek trafik için sitenizi sertleşmesine.

1) https://browsermob.com/ sitenizi yük-testi gibi düşük maliyetli aracını kullanın. En azından saatte 100K tekil ziyaretçi bakıyor olmalıdır. MSN ana sayfa kapalı bir reklam alırsanız, saatte 500K tekil idare edebilmek için sabırsızlanıyoruz.

2) Bir CDN tüm statik grafik / video içeriği taşıyın. Edgecast ve Amazon iki mükemmel seçimlerdir.

3) Kullan Jet Profiler herhangi yavaş performans sorguları analiz etmek için, MySQL Server profil. Küçük değişiklikler büyük faydalar olabilir.

Bir önbelleğe alma ters proxy sunucusu bulunuyor (kalamar gibi, ama çok daha tek amaçlı) - kullanılarak Varnish içine bak. Ben bunun arkasında bazı oldukça büyük siteler koşuyoruz, gerçekten iyi iş gibi görünüyordu.