v2.5.2
Giriş yap

PHP ve Yoğun Siteler İçin Caching Durumu Hk.

r00t
390 defa görüntülendi

Merhabalar,
Popüler bir siteye ait ikinci bir site açılacak. Siteye günlük on binlerce trafik gelecek (günlük minimum 30-40.000 bin tekil ziyaretçi gelecek)

Site altyapısı düz PHP ile kodlanacak; MySQL veritabanı ile birlikte ajax işlemlerin de bol bulunacağı bir yapı olacak.

Yukarıda belirttiğim gibi, bazen mesela tek bir duyuru linki ile siteye belki 10-20.000 kişi dakikada siteye yığılacak; çok fazla Ajax requestler olacak; dolayısı ile veritabanından da (ürün listeleme, ürün detaylar vb.) gibi istekler olacak.

Siteye yük bindirmemek adına, sitenin çökmemesi ve stabil çalışması adına bu tarz siteleri kodlarken

  • nelere dikkat edilmelidir?
  • nasıl bir yapı oluşturulmalıdır?
  • bu tarz sitelerde, düz PHP kullanırken nasıl bir cache mekanizması kullanılmalıdır?
  • alternatif önerileriniz var mı benim öngöremediğim, aklıma gelmeyen, sormadığım şeyler için vs.?

saygılar

Cevap yaz
Cevaplar (4)
r00t
663 gün önce

@h4ckdr0 APC, Memcached veya Redis kullanımı ile ilgili zamanında araştırsam da "vanilla PHP" ile kullanımı için sağlıklı bir kaynak bulamadım. yani herkes bir parça bir şey anlatım temelde bırakmış işi. önerebileceğin bir kaynak var mıdır?

h4ckdr0
664 gün önce

Merhaba,

Sitenin çökmemesi ve stabil çalışması için dikkat edilmesi gereken bazı konular:

Sunucu seçimi: Yüksek trafikli siteler için güçlü bir sunucuya ihtiyacınız olacak. Bu sunucunun işlemci, RAM ve disk alanı yeterli olmalıdır.

Veritabanı optimize edilmeli: Veritabanı optimizasyonu, sorguların hızlı çalışmasını ve veritabanının yavaşlamasını önlemek için önemlidir. Bu nedenle, veritabanı sorgularınızı ve indeksleri optimize etmelisiniz.

Cache mekanizması kullanılmalı: Yüksek trafikte, aynı veriyi tekrar tekrar sorgulamak yerine, bu veriyi önbellekte tutmanız gerekir. PHP'de, önbellekleme için APC, Memcached veya Redis gibi araçlar kullanabilirsiniz. ( Redis benim favorim :) KablosuzKedi çok güzel anlatmış)

Kullanıcı arayüzü düşünülmeli: Kullanıcı arayüzünün optimize edilmiş olması, siteyi hızlı yüklenmesini ve kullanıcılar için daha iyi bir deneyim sunmasını sağlar.

Load balancer kullanmak: Load balancer, sunucunun yükünü eşit olarak dağıtmak için kullanılır. Bu sayede, tek bir sunucunun yükü aşması durumunda diğer sunucular araya girerek site çökmüş olmaz.

CDN kullanmak: Content Delivery Network (CDN) statik dosyalarınızı, resimlerinizi, javascript ve css dosyalarınızı, daha hızlı yüklenmesini sağlar.

Bu öneriler sadece yüksek trafikli siteler için önerilerdir ve site yapımına göre daha fazla öneri de olabilir ama bu önerilerle yüksek trafikli site yapımında temel ihtiyacınızı karşılamış olabilirsiniz.

r00t
665 gün önce

Evet aslında bahsettiğim şey çok daha geneldi. Zaten sınırsız sunucu alacağım Bandwith, Trafik vs. için; Muhtemelen 2 veya 3 GB RAM / 2 CPU var pakette.

Düşündüğüm şey hem sunucu kullanım yük durumu, hem MySQL requestleri, hem de öngöremediğim diğer konular için geçerli bu...

kargasa1982
665 gün önce

Veritabanınızı düzgün şekilde dizayn ettiyseniz ve sitenin bulunduğu sunucu düzgün ise, anlık 10-20K giriş bişey yapmaz. Tek çekineceğiniz şey mysql olmalı. Veritabanından sürekli okunan verileri bir json dosyası olarak tutun site altında ve belirli aralıklarla güncelleyin, kullanıcılar db ulaşmak yerine bu json datayı okusunlar. Sepet tarzı uygulamaları direk db üzerinde tutmayın. Session veya Cookie ile sepeti tutarsınız, son aşamada ancak db ile işlem yaparsınız.