Ölçeklendirme LAMBASI

6 Cevap php

Ben çoğunlukla videoyu hizmet veren bir lamba web sitesi ile bir müşterim var. O, tüm bileşenleri ile tek bir sunucu üzerinde şu anda. O bazı ölçekleme sorunlar yaşıyor. Yardımcı olmak için kullanılabilecek teknikler nelerdir.

Onu ve web sunucusu arasında bir GB Ethernet ile başka bir sunucuya DB dışarı ayıran kullanılır. Belki biraz yük dengeleme ve çoğaltma ek MySQL sunucuları ile daha çok web sunucular ekleyerek?

Mümkünse nasıl ölçeklendirileceğini bazı orta, büyük, süper büyük örnekler istiyorum.

Video aslında jpg resim olarak geliyor. Bu web sitesine benzer:

http://www.webcams.travel/webcam/1170170095

Ve bazı ayrıntıları eklemek. Ben saatte maksimum ziyaretçi 1000 olurdu anlamaya ve bunu için şanslı olacağını düşünüyorum. Belki 1000 bir gün yakın.

6 Cevap

Vb CloudFront ve MEMCACHE ilgili öneriler, performans sorunları olanlar adresini kök varsayarak, tüm iyi.

Veritabanı tarafında:, profil, profil profil. Ayrı bir sunucuya DB Hareketli (muhtemelen) iyi bir adım olduğunu, ancak bu DB örnek üzerinde yürütülüyor sorguları profilli değil varsa, size geliştirmek için gereken ne bilmiyorum.

En sık sorulan bir EXPLAIN yaparak başlayın, ve büyük ya da büyüyen tablolarda gereksiz sıralı taramalar yapıyoruz olmadığını kontrol edin. Gerekli Index.

Kullanılmayan sütunları geri geçerek sorgulardan herhangi mısınız?

Diğer commenters veritabanından grafik / video içeriği sunan, endişeli gibi, mısınız? Dosyalar dosya sistemi tutulur ve oradan servis edilmelidir.

Tüm tablolar MyISAM mı? Sık güncellenen masalar InnoDB, nerede satır düzeyinde kilitleme (MyISAM tablo-düzeyi kilitleme aksine) yararlanabilir taşıyarak performans iyileşme gösterebilir.

Bunlar sadece basit, genel öneriler - daha fazla detay vermeden tam olarak what yavaş olduğunda, daha derin bir şey sunmak zor.

Öncelikle, ben size darboğaz ölçekli çalışmadan önce ne olduğunu bilmeniz gerekir katılıyorum. Burada değirmen önerilerden bazıları çalıştırmak başlamak için:

  1. Veritabanından video alın. Ben bu her durumda mantıklı nasıl görmüyorum.

  2. Sadece sunucuya video içeriği bir sunucunun daha eklemek ve özgün bir HTML / uygulamayı bırakın. Sadece bu yükü azaltmak, ancak herhangi bir HTTP connection limits aşarak istemci tarafında bir performans artışı yaratır gelmez.

  3. Önbellek - Bu Memcahce ya da bunun yerine dinamik her istek için işleme sadece ön bina HTML çıkış anlamına gelebilir.

  4. Eğer ulaşmak için şanslı iseniz, 'süper büyük' ​​bir CDN hakkında düşünebilirsiniz. Ben olsa daha önce diğer birçok engel karşılaşacak eminim.

İyi şanslar.

Sorunun tam olarak ne işe gerekir - genel bir çözüm yoktur.

Gerçek donanım ve müşterilerine çok taklit bir şey ile bir performans test ortamı oluşturmak gerekiyor. Bu oldukça pahalı olabilir.

Sorun (bu olabilir) veritabanı ise çözüm çok veritabanlarına her veri tutan bir kısmını bölmek için sık sık.

Ama herhangi bir aklı başında insan MySQL video saklamak olacağını hayal etmem - o yapıyor, sonra bir üstlenmeden için olabilir.

Onun sitenin çeşitli yerlerinde aslında indirebilmek ne kadar yük görmek için profili.

Aslında videoları hizmet vermektedir yükün en tahmin - ikinci (üçüncü, dördüncü ...) sunucusuna bu işi yönlendirmek için bir proxy kullanabilirsiniz.

Barrett cevaplar hemen hemen yapardım ne - id darboğazlar, memcached bakmak vb web hizmetleri, ayrı bir sunucuya DB taşıyın

Ben Amazon CloudFront coğrafi olarak yakın sunucularından içerik kadar hizmet edeceğini adında yeni bir hizmet olduğunu eklemek istiyorum. Ben henüz bunu bir deneyin verilmiş değil, ancak nispeten düşük maliyet için yükü yaymak için bir yol olabilir.

Ayrıca, kendi sistemlerini ölçek nasıl Livejournal ve Facebook sunumlar bakmak, onlar sizin uygulamamızla (ler) yapılandırılmış olması nasıl bağlı bazı bilgiler verebilir.

Bu xdebug iyi bir başlangıç ​​olacak gibi bir şey kullanarak, PHP ise - Sen ile başlar ve darboğazların nerede olduğunu öğrenmek için uygulama profil olmalıdır. Bu veri serialising, ya da bir veritabanına konuşurken uzun zaman geçirmek olabilir - belki memcached önbelleğe alma yardımcı olabilir.

Eğer MySQL kullanıyorsanız İkincisi, MySQLs yavaş sorgu günlüğünde (my.cnf log_slow_queries) açın; Bu zaten belirtildiği gibi> <İZAH yoluyla onlara ayar hedef olduğunu bilmek kez size pahalı veritabanı sorgularını ne bir fikir vermek için kullanılan ve edilebilir. Bu sadece tekrar hızlı olmak gerekir, bu noktada, veritabanına birkaç dizinleri eklemek gerekir durumda olabilir. Örneğin diğer ilgili my.cnf parametreler vardır bir dizin kullanarak değil sorgular log.

Üçüncüsü, Yahoo'nun sayfa hızı firefox eklentisi gibi araçları içine bakmak - bu (örn. emin başlıklarını vs vs sona sahip olun, size iade ediyoruz şeyler sıkıştırmak, statik içerik boşaltma) bazı önerilerde yapacağız. Belki sunucusu (ler) kendilerini darboğaz değildir ve sayfaları üçüncü bir tarafa (harici JS, reklamlar, flash ...) nedeniyle bir bağımlılık işlemek için uzun bir zaman alıyor.

Eğer veritabanı sunucusu (yani bir ön uç yük dengeleyici ile birden webservers gerekiyor, ya da birden çok veritabanına ihtiyacınız yok ek donanım eklemek gerekir nerede olduğunu bilmek için web sunucunuza kıyasla, ne kadar meşgul bir fikir olması gerekir çoğaltma, ya da her ikisi ile sunucular?).

Ben söylenebilir daha fazla yük vardır eminim ...