Php uygulama sunucuları yatay ölçek nasıl?

1 Cevap php

Ben php uygulama sunucusu için web sunucusu olarak lighttpd kullanıyorum. Ort. Bu sunucudaki yükü yaklaşık 2-3. MySQL veritabanı başka bir sunucuya (o yük ~ 0.4) ayrılmıştır. Nasıl php uygulama sunucusu ölçek olabilir?

Teşekkür ederim.

1 Cevap

Birkaç kelime, bir çözüm, genellikle konuşan, şudur:

  • Birçok PHP sunucuları var
  • Have another load-balancing server in front of those
    • Eğer 3 PHP sunucuları varsa, o zaman, bu yük-dengeleyici her PHP sunucuda aldığı isteklerin% 33 göndereceğiz.

Yük dengeleme sunucu bazı özel donanım olabilir; ya da bir ters proxy, Apache örneğin (see mod_proxy_balancer for example), {nginx [(2)]},) , vernik kullanarak ...


The most important problems you'll generally face when using several PHP servers instead of ones are related to the filesystem : with several servers, each server has its own disks and filesystem.

For example, if a user is randomly balanced on server 1 for one page, and server 2 for another page, you cannot use file-based sessions : the session will be created on server 1, but will not be found on server 2, later.
In this specific case, you'll have to use another mecanism to store sessions -- store them in a database, or memcached, for example.

Görüntülerle aynı şeyler (uploaded by users, for example): Ya gerekir:

  • Sunucular arasında bunları senkronize
  • Veya ağ sürücüsüne çeşit kullanımı


Edit after the comment : For the deployment, with several servers, I generally do exactly as I would with only one server.

Updating a web app without any downtime : Ben sık kullandığınız sürecin tür hakkında daha fazla bilgi almak için, ben bu soruya bir süre geri verdim cevabı bir göz atabilirsiniz.

Orada verilen açıklama yapabilirsiniz, tek bir sunucu için, ama birkaç sunucu üzerinde aynı şeyi yapmak için:

  • Lütfen sunucuların her biri için arşiv yükle
  • Ayıklamak
  • And, at almost the same instant, switch the symlink on all servers
    • Eğer 5 sunucuları varsa en kötü, 10 saniye anlamına gelir her sunucular arasındaki gecikme, 2 veya 3 saniye olacak? Muhtemelen büyük bir sorun değil :-)

(I've done this with up to 7 servers, for one application, and never had any problem)