it-swarm.asia

WordPress ne kadar iyi ölçeklenir?

Yeni WordPress ve yeni özellikleri ile WordPress basit bir blog motorundan çok daha fazlasını yapabiliyor gibi görünüyor. Ancak WordPress ölçeği, günde 10k -> 100k kullanıcı tarafından ne kadar iyi kullanılıyor?

Bu kadar çok kullanıcı ile büyük bir kısmı iyi bir önbellek stratejisine sahip olmak olacaktır, ancak WordPress bu konuda kolaylık sağlamak ve ihtiyacınız olan kontrolü vermek için ne kadar iyi geliştirilmiştir Fx, bir sayfanın bir kısmını önbelleğe almak ve yalnızca kullanıcıya özel parçalar oluşturmak, ana/bağımlı db kurulumunu ve bunun gibi şeyleri desteklemek?

34
googletorp
  1. Çok fazla paylaşılan hosting beklemeyin - paylaşılan bir Host iseniz WordPress yavaşlık için suçlamayın. Paylaşılan ana bilgisayarlar 1000'den fazla hesabı tek bir sunucuya tıkayabilir. Böylece bütün gününü 10 $/ay'lık bir hesabı optimize ederek geçirebilirsiniz. Ayrıca buzzwords pazarlamaya da dikkat edin - sadece "bulut" ifadesinin bir sunucuyu 100 veya 1000 kişiyle paylaşmadığınız anlamına gelmediği anlamına gelir.

  2. Bu noktada önbellek eklentilerinin gerekli olduğunu sanmıyorum. WP kaynak koduna bakarsanız, çekirdeğe eklenmiş önceden önbellekleme zaten vardır. Önbelleğin önbelleğinin bir önbelleği - dikkat edin, bu ters etki olabilir.

  3. Sizi yavaşlatan en önemli şey, yavaş MySQL sorguları ve WordPress'in kullanıma hazır olması sizi rahatsız etmemelidir. Ancak, yorum sorgularımı "SINIR Etmek" zorunda kaldım, çünkü 50.000'den fazla yorumum vardı. (Bu henüz düzeltildi mi?) Ayrıca, atipik bir şey yapıyorsanız (1000 kategori gibi?) Bu da bir sorun olabilir.

  4. NginX'li bir Linode 512 kullanıyorum ve "top", PHP ve NginX’in çalışmalarını istek başına saniyenin 1/100’ünden daha az bir zamanda yaptığını gösteriyor. Neredeyse tüm CPU zamanı MySQL ile bağlanmıştır. 20 dolarlık bir Linode ile ayda 1 milyon sayfa sunabilirsiniz, ancak bir kez eklenti ve fotoğraf eklemeye başladığınızda, "1GB" bir Linode'ye ihtiyacınız olacağını düşünüyorum. Benim bakış açıma göre, bu oldukça doğrusaldır: Sayfa görünümleri iki katına çıkarsa, Linode'nizin boyutunu iki katına çıkarın.

Feragatname: Linode için çalışmıyorum.


Güncelleme (~ 2 yıl sonra) bir sayfanın bölümlerini PHP ile önbelleğe almak istediğinizden, şaşırtıcı derecede hızlı kullandığım basit bir çözüm. Saniyenin 1/100'ünde sayfa başına birkaç ayrı parça/kısım önbelleğe alıyorum. Bir ramdisk bunu daha da hızlandırabilir gibi görünüyor, fakat benim ihtiyaçlarım için oldukça hızlı:

$cache_file = "./cache/portion-1". $since; // maybe round() this $since timestamp
$cache_life = 1000; // seconds to keep this cached
$filemtime = filemtime($cache_file);  // returns FALSE if file does not exist
if (!$filemtime or (time() - $filemtime >= $cache_life)) {

    // heavy lifting starts
    $output = 'Heavy!';
    // heavy lifting ends

    if (!file_put_contents($cache_file,$output,LOCK_EX)) { echo 'error'; } // save the cache    
    echo $output;

} else { 

    // load from cache
    $output = file_get_contents($cache_file); 
    echo $output;        
} 
4
PJ Brunet

Sonunda WordPress'i yavaşlatan 3 şey var ve bunlar bunu kaynaştırıyor:

  • Hosting yığını - en son yazılıma sahip iyi bir Sunucuya ihtiyacınız var - PHP 7, Nginx, Vernik, Redis, fail2ban ve PerconaDB hepsi iyi seçeneklerdir
  • Tablo taraması yok - birçok eklenti tablo taramasının ne olduğunu bile bilmeyen amatör kodlayıcılar tarafından yazılır. Tablo taramalarını önlemek için iki şeye ihtiyaç vardır: kullanılabilir bir dizin ve dizini kullanabilecek şekilde yazılmış bir sorgu
  • PHP döngülerinde hiç veya az SQL sorgusu var - bazı eklenti kodları yalnızca küçük siteler üzerinde açıkça test edildi ve bir nedenden dolayı veya bir diğeri, veritabanınızdaki her üründe dolaşıp her ürün için yeni bir SQL çağrısı yapacak/sonrası. Sayfa başına 100'den az SQL sorgusu için ideal - istediğiniz gibi geliyor, ancak gerçekten değil ve <100 ile 200ms civarında önbelleksiz bir TTFB elde edeceksiniz.

Yukarıdakileri yerleştirdikten sonra önbellekleme ekleyebilirsiniz; Vernik, CDN'ler, sayfa önbelleğe alma vb.

Ölçeklemeniz gerekirse, veritabanı için PerconaDB XtraDB ve dosyalar için Unison kullanarak bir küme oluşturabilirsiniz. Bu şekilde, wp-admin ve cron runner'ınız olarak 1 düğümü ve bir yük dengeleyicisinin arkasında web trafiği sağlayan diğer düğümler olabilir.

0
Dave Hilditch