Günde 10 milyon istek ve mySQL sorgusu için ne tür bir sunucuya ihtiyacım var? [kapalı]


23

Ben sunucu yönetiminin acemiyim ve yeni web siteme ev sahipliği yapacak güçlü bir barındırma hizmeti arıyorum. Bu web sitesi temel olarak mobil bir çevrimiçi oyunun arka ucudur ve şunları yapacaktır:

  • günde 10 milyon HTTPS talebini ve mySQL sorgusunu yönetebilir
  • sabit diskte 2000 GB'a kadar dosya saklayabilir
  • Her ay muhtemelen 5000 GB veri aktarma
  • PHP ve mySQL üzerinde çalışır
  • mySQL veritabanında 10 milyon kayıt var, her kayıt için 5-10 alan var, her biri yaklaşık 100 bayt

Bu gereksinimleri yerine getirmek için ne tür bir sunucuya ihtiyacım olduğunu gerçekten bilmiyorum, sorum şu:

  1. Özel bir sunucu veya VPS için hangi CPU / RAM'e ihtiyacım var?
  2. Hangi barındırma şirketleri bu türden bir sunucu veya VPS sunabilir?
  3. Peki ya bulut bilişim? Amazon EC2'yi araştırdım ama bu bana biraz karışık geliyor. Ve Rackspace ile temasa geçtim ama garip bir şekilde Cloudsites benim gereksinimlerime uygun olmadığını söylediler. Başka bir bulut barındırma şirketi var mı merak ediyorum.
  4. Başka bir alternatif yöntem var mı?

8 gg ramlı 2 linux sunucusuyla bu konuyu ele aldık, mysql bir mysql kümesidir ve DB hızlı bir şekilde bellekte depolanır, cpu asla gerçekten çok iyi bir dağıtım kullanıyorsanız ve diskin kullanılması gerekmeyecek saatlik anlık görüntüler almak, başarısızlık durumunda size fazlalık kazandırır. Ayrıca, mysqltuner'in kurulu olmasını isteyebilir, böylece indekslere vb. göz atabilir ve her şeyi en iyi şekilde kullanabilir ve aynı zamanda birçok indeks ekleyebilir ve yavaş sorguları günlük tutabilirsiniz, web için bu gerçekten ucuz bir yük ekleyin. trafiği bölmek için öndeki dengeleyici
eksi4 19:10

Neden bir bulut servisi kullanmıyorsunuz? Azure, Amazon, RackSpace, GoGrid, Heroku?
bbqchickenrobot

Yanıtlar:


33

Ucuz bir masaüstü?

Matematiğe girelim.

  • 10 milyon istek.
  • Bu, saatte 416667 isteğe bölünür.
  • Bu dakika başına 6944 istekleri kırar.
  • Bu saniyede 116 isteme ayrılıyor.

Bunun iki katına (en yüksek yüke) ve bir yükten bahsediyoruz, ucuz bir dört çekirdekli masaüstünün sorguları yeterince basit EĞER ile halledebilir ve gerçekten ne kadar karmaşık olduklarını söylemiyorsunuz.

  • Ayda 5000 GB önemsizdir - cidden, aynı matematik geçerlidir.
  • Bu 208GB / güne düşer
  • Bu 8GB / saat'e ayrılıyor
  • Bu 148 MB / dakikaya düşüyor
  • Bu 2,5 MB / saniye, 25Mbit'e düşüyor. Zirve için iki kat - 50Mbit, herhangi bir barındırma merkezi için önemsiz. Yine de sana mal olacak.

  • 2000 GB'yi sabit diskte saklayın. Bu RAID'deki 2x2000 GB sabit disk mi? Tabii: veritabanı için değilse, çok fazla karmaşık IO'su varsa, o zaman bir düzine disk ile bir LID 73GB 15.000 RPM SAS diski arasında bir RAID 10'da (yaklaşık 60 disk) ihtiyaç duyulan G / Ç'yi almak için bir şey olur - bu veri erişim düzenleri hakkında LOT daha fazla bilgi olmadan soruya cevap verilmemektedir.

  • PHP ve MySQL çalıştırır - Cep telefonum bunu yapabilir;) Sorunun ne kadar karmaşık olduğu sorusu. MySQL MAY veya MAY kabul edilebilir bir çözüm olmayabilir, BTW l. - daha fazla test gerektirecek. Bazı insanların hala daha büyük ticari veritabanlarını kullanmasının bir nedeni var.

  • Özel Sunucu veya VPS için hangi CPU / Ram'a ihtiyacım var?

Biri bunun mantığa bağlı olduğunu söyleyebilirim (PHP bölümündeki hesaplamalar, programcıların zekası veya programcı eksikliği ve daha pek çok soru.

Cidden, bu önemsiz olmayan bir kurulum. Bazı uzmanları araştırın.

Temel olarak, aşağı inip ödevlerinizi yapmanız gerekir. Soruların çoğu bu biçimde cevaplanamaz. Özellikle verilerinizi önemsemediğiniz için ...

  • Yedekler?
  • Acil durum planı yok mu? Yani, sunucular ölür - yani değiştirme yapılandırılırken sitenin günlerce kapalı kalması doğru olur mu?

cevabın için teşekkürler. php basit, sanırım ana yük mySQL'de, Windows'da WAMP ile dizüstü bilgisayarımda (Core2 Duo) bazı mySQL sorgularını test ettim. mySQL'de 10 milyon kayıt varsa, her sorguda ortalama 0.1 saniye Quad Core ile mySQL sorgularını ne kadar güçlendiriyor?
Calvin

2
Dört çekirdeği unut. Dizüstü bilgisayarınız IO'DA SUCKS - ve IO, veritabanlarının sınırlandığı yerdir. ONE sabit diskiniz var, SLOW ve ROBUST (latop). Sunucular HIZLI (ancak sağlam değil) MULTIPLE sabit diskleri kullanır. Dört çekirdekli bir SQL Server fron MS kullanıyorum ve CPU'yu maksimuma çıkarmadan basit seçimlerde (bir parti bir seçim olmak üzere) saniyede 500'den fazla parti işleyebiliyorum - ancak muhtemelen bir disk alt sisteminde bir LOT disk aktivitesi elde ediyorum seninki kadar 30 kat daha hızlı (ve bu henüz etkileyici değil). Diskler sınırdır. Artı uygun programlama.
TomTom

1
Ssl trafiğinizin şifrelenmesi / şifresi çözülmesi gerekir, bunu bir dengeleyiciden boşaltmak ve normal bir http sunucusuna ters bir proxy yapmak isteyebilirsiniz. Bu gecikmeyi düşük tutmalı. ayrıca donanımda şifreleme de yapabilirsiniz ....... en.wikipedia.org/wiki/SSL_acceleration eğer bütçeniz veritabanınız için endişe değilse ramsan.com/success/ccpgames.htm
The Unix Janitor

7

Yararlı olabilecek bazı deneyimlerimi eklemek için:

  • TomTom'un belirttiği gibi, çoğu uygulamanızın tasarımına ve uygulamasına bağlı olduğundan, tam spesifikasyonlar vermek zor / imkansızdır. Bana veya bir başkasına X istek / saniye veren donanım sizin için iyi çalışmayabilir.
  • Ortalama% 100'lük bir CPU boşaltma oranıyla 100 istek / sn (10 milyon / güne yakın) hizmet veren düşük seviye bir MySQL sunucusuna (Intel Core2 Duo E4600 2.40 GHz, 4 GB RAM) sahibim. Bazı temel ince ayarlardan başka, ağır okunması nedeniyle iyi çalışıyor (% + 95 okur) ve aktif kayıt seti kolayca bellekte bulunur. Sunucu RAM miktarını seçerken, büyük bir fark yaratabileceği için aktif setinizin boyutunu düşünün. Veri tabanı boyutunuz ile aktif kayıt seti boyutunuz arasındaki farkı anladığınızdan emin olun. Örneğin, veritabanlarım toplamda ~ 7GB'tır, ancak etkin kümenin yalnızca birkaç 100 MB olması muhtemeldir.
  • Benzer şekilde, günde ortalama ~% 95 CPU boşta kalma oranına sahip ~ 1 milyon talep sunan benzer özelliklere sahip bir Apache sunucusuna sahibim. İstekler çok basit harita verisi AJAX sorguları ve daha karmaşık MediaWiki sayfalarının bir karışımıdır.
  • Özel uygulamanızı kıyaslama, tam olarak neye ihtiyacınız olduğunu belirlemeye çalışmak için iyi bir başlangıçtır. Tahminde bulunmak istemezsiniz ama fazla tahminde bulunmak, potansiyel para ve çaba kaybı nedeniyle aynı derecede kötü olabilir.
  • Yalnızca ortalama istek oranını değil, en yüksek oranı da göz önünde bulundurun. Talep oranları güne, haftaya ve aya göre önemli ölçüde değişebileceğinden, ortalama oranı ancak zor bir şekilde tutabilecek bir sunucu istemezsiniz. Örneğin, hafta sonları minimum saatlerde yaptığım gibi hafta sonları yoğun saatlerde 3-4 kat trafik alabiliyorum. Ne kadar değişebileceği, uygulamanıza ve kullanıcı tabanınıza bağlı olarak değişebilir.
  • Herhangi bir veritabanı / HTTP isteğinizi önbelleğe alabilir misiniz? Bu, ne kadar önbelleğe alabileceğinize bağlı olarak daha ucuz / daha az donanımla istek oranınızı önemli ölçüde artırabilir.
  • Gelecekteki büyüme için ölçeklendirme seçeneklerinizi daha sonra değil şimdi düşünün. İyi bir seçenek, minimal donanım ile başlamanıza ve gerektiğinde kolayca büyümenize izin veren yatay ölçeklendirme kullanmak olabilir.
  • Uygulama katmanınızın uygun tasarımı, nihai performansı üzerinde çok büyük bir etkiye sahip olabilir. Dizin içermeyen bir tablodaki hatalı bir SQL sorgusu, uygun şekilde tasarlanmış olandan daha yavaş büyüklükte olabilir. Benzer şekilde, kötü yapılandırılmış Apache / MySQL sunucuları, doğru kuruluma göre çoğu zaman daha yavaş olabilir.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.