Artan kullanıcıları desteklemek için bir PHP programı yük dengeleme?

2 Cevap php

Ben göz önünde bulundurarak tek bir sunucu yazılmış bir PHP programı var, bu yüzden işleyebilir ne kadar doğasında sınırlama vardır. Örneğin, geliştirici onun geçerli webhosting hizmeti o sadece 50 kişi aynı anda bunun üzerine açmış olabilir olarak yorumladığı "50 MySQL bağlantıları" ile ona sağladığını söylüyor.

Biz bu nedenle 500 veya daha fazla bir yük işleyebilir onu büyütmek istiyorsanız ne yapmamız gerekiyor? Nasıl minimal değişikliklerle bir "yük dengeleyici" için bu programı uyarlayabilirsiniz?

Uygulama PHP manzum ve MySQL kullanır.

2 Cevap

Ne olursa olsun, bir ev sahibi tarafından kurulmuş herhangi bir kısıtlama, yapmanız gerekir sensibly limit your queries whenever possible. Eğer hosting, ya da senin emrinde tamamen sunucularda tam kendi 10 raflar üzerinde ise bu gider.

Bir sayfa oluşturmak için gereken az sorgular:

  • Hızlı veritabanı bağlantıları RDBMS belleği serbest bırakmak için izin kapalı
  • Hızlı bağlantı kaynaklar uygulama belleği serbest bırakmak için izin kapalı
  • Daha hızlı HTTP sunucusu bunları belleği serbest bırakmak için izin çıkış süreçleri
  • Daha hızlı kullanıcı aradıkları bilgileri alır

Bir tipik paylaşılan web barındırma (notu gibi) tek bir sunucu zihniyet var olacaktır. Eğer ölçekli istiyorsanız bir web sunucusu olarak aynı bilgisayarda bir RDBMS'yi Koşu neredeyse hiç iyi bir fikirdir. Neden? Her ikisi de aslında ihtiyaç ve istekleri ile başa çıkmak istedi verileri iade edebilmek için kullanmak daha yolu daha fazla bellek tahsis etmek zorunda. Bu type affinity destekleyen herhangi bir RDBMS için özellikle doğrudur.

Ayrıca, aslında need dönmek için alıyor bu ne kadar sorguları bir göz atın. Onlar daha hızlı daha hızlı kaynaklar serbest (ve yukarıdaki listede hemen hemen her şey) vardır, bitirmek.

Bunun anlamı, sizin app veritabanına bağlı harcadığı daha az zaman, daha az muhtemel bir bağlantı sınırı vurmak olacaktır. 50 500 veya daha fazla kullanıcıya hizmet verebilir. Olması, sorguları sınırlama onları ya da her ikisi optimize.

App iyi bir göz atın. Nerede her sayfa yük değiştirmek olası değildir bilgi için önbelleğe alma uygulayabilirsiniz? Nasıl seans daha iyi yararlanabilir? O harika ajax arayüz HER olay için bir sorgu yapıyor?

Çoğu kişi zaten bu böyle değil emin olun, bu nedenle bu gibi sorular micro optimization kategori içine düşecek. Onun gerçekten bir temel tasarım konsepti.

Ölçek ve bu tür kısıtlamalar etrafında çalışmak için tasarım ve genellikle zaman ve para onları ele verir kadar kısıtlamaları önleyebilirsiniz.

Ayrıca, her şeyi kontrol Bir yan not, bir VPS tipik bir re-seller hosting hesabı gibi neredeyse ucuz. Neden kendi sanal alanını oluşturmak ve kendi kurallarına göre oynamak değil mi?

Gibi load balancing, ilk replication düzeni karar. Daha sonra iş dağıtmak için nasıl en iyi karar. Bazı durumlarda, bir köle okuyabilir ve başka yazma, diğer durumlarda size ters vekil çeşit istihdam etmesi gerekir, donanım veya yazılım olabilir. Sorunuz bu konuda daha kapsamlı bir cevap sunmak için biraz çok geneldir.

Açık olduğunda bir MySQL bağlantısı sadece kullanım olarak sayar. Ben bir sayfa almak için bir web sunucusuna bağlanmak Örneğin sadece 50ms almak ya yani aslında sayfa oluşturmak ve bana göndermek için (sanırım) olacak. Yani 1 MySQL bağlantısı ile 1 saniyede 20 sayfalarını hizmet anlamına gelir. Ne kullanıcı, kendi tarayıcısı için gönderdikten sonra sayfa yapar sizin sunucularının performansını etkilemez.

Yani 50 ile sorunlara neden saniyede 1000 civarında hit almak gibi olurdu.

O her zaman MySQL bağlantıları kapatmak erken (yerine komut yaptığında onları sonlandırmak icar) bir sorun haline yaramazsa.

Dürüst olmak gerekirse ben bunu düşünüyorum sorun olduğunu sanmıyorum - bu gerçekten bir sorun olmak için yeterli trafik alırsanız o zaman biz 'olması iyi bir sorun' diyoruz :)