Ağır yük LAMP uygulama için en uygun donanım yapılandırması nedir

3 Cevap php

Ben 5000 kullanıcıları hedefleyen am - Ben eşzamanlı kullanıcılar çok sayıda Linux Apache-PHP-MySQL uygulama (Moodle e-öğrenme platformu) çalıştırmak gerekir. Eş zamanlı derken 5000 kişi aynı anda uygulama ile çalışmak gerekir demek. "İş" yapmak veritabanı değil sadece okur değil, aynı zamanda yazar demektir.

Bu veritabanı ekler / güncellemeleri bir sürü yapıyor beri uygulaması, çok tipik değildir, yani önbelleğe alma teknikleri çok yardımcı değildir. Biz InnoDB depolama motoru kullanıyor. Ilave uygulamasında performans göz önünde yazılı değildir. Örneğin bir Apache iplik genellikle RAM yaklaşık 30-50 MB kaplar.

Bilgi yükü bu tür üstesinden ölçeklenebilir yapılandırması oluşturmak için gerekli donanım ne için ben minnettar olacaktır.

Biz çok daha düşük yük (genellikle 300-500 eşzamanlı kullanıcılar) idare edebiliyoruz iki 4 çekirdekli işlemci ile şu anda iki adet HP DLG 380 kullanıyor. Bu kutuları bu tür yatırım ve bunları kullanarak ya da biraz daha üst düzey donanım ile gitmek daha iyidir küme oluşturmak için mantıklı mıdır?

Ben özellikle merak ediyorum

  • how many and how powerful servers are needed (number of processors/cores, size of RAM)
  • what network equipment should be used (what kind of switches, network cards)
  • any other hardware, like particular disc storage solutions, etc, that are needed

Başka bir şey olduğunu en iyi mimari budur, her şeyi bir araya getirmek için nasıl. MySQL ile Kümeleme (insanlar bile burada Stackoverflow üzerinde, MySQL Cluster şikayet ediyor) oldukça zordur.

3 Cevap

Eğer fiziksel makinelerin bir çift size ihtiyacınız pik yük vermiyor noktaya geçmiş olsun, muhtemelen sanallaştırmanızı başlamak istiyorum.

EC2 muhtemelen LAMP yığını için şu anda en esnek çözümdür. Onların fiziksel makineleri sanki, onların VM kurmak, onları küme, daha fazla işlem-zaman ihtiyaç olarak onları spin off-peak zamanlarda onları kapatmak, bu sistem test etmek kolay yani makine görüntüler yaratabilirsiniz ...

Yük dengeleme ve otomatik spin-up için çok çeşitli çözümler vardır.

Eğer app uyum yapabilir, onların non-ilişkisel veritabanı motoru üzerinden kullanımı olsun de olabilir. Çok yüksek yüklerde, ilişkisel veri tabanları (özellikle ve MySQL) etkin ölçekli değil. Eğer donanım olarak eklemek SimpleDB, BigTable ve benzeri ilişkisel olmayan veritabanlarının pik yük neredeyse doğrusal ölçekli olabilir.

Uzak bir ilişkisel veritabanı hareketli olsa büyük bir adım olduğunu, şimdiye kadar kendim yapmak için gerekli ettik diyemeyiz.

Ben donanım hakkında çok emin değilim, ama bir yazılım noktası görünümünden:

Nesneleri ve veritabanından dönen koleksiyonları önbelleğe alacak etkin bir veri katmanı ile daha sonra standart bir master-slave konfigürasyonu iyi iş olacağını söyleyebilirim. Rota tüm etli usta yazar ve gerekli tüm gibi daha köle ekleyerek, kölelere okur.

Nesneler olarak önbellek verileri data-mapper/ORM ve HTML değil döndü, ve önbelleğe alma katmanı olarak Memcached kullanın. Bir nesneyi güncellemek sonra, memcached yılında db ve güncelleme bunun için en iyi kullanım IdentityMap desen yazmak. Eğer web sunucuları üzerinde çalışan bu paçayı olabilir, ancak muhtemelen epeyce Memcached örneklerini gerekir.

Biz MySQL kümeleme düzgün çalışması için asla olabilir.

Yazmak ve ince olmalıdır SQL sorguları ile dikkatli olun.

Piotr, sen moodle.org Henüz bu soruyu soran denediniz mi? Olan personel üyeleri şu anda buna cevap benzer scoped kurulumları bir çift vardır.

Bu sürümde Moodle'ın mimarisi ile bazı sorunları için iyi düzeltmeleri bir demet var gibi ayrıca, dağıtım için zaman çerçevesi ne bağlı olarak, moodle 2.0 satır yerine moodle 1.9 hattını kontrol etmek isteyebilirsiniz, bu görünüyor.

Ayrıca: Bu memcached kayalar. Bunun için php ivme kayalar. serverfault Muhtemelen rağmen bu soru için daha iyi * değişim sitesi