Makale Başlıkları
Kısaca
Siteler trafik arttığı için değil, trafiğe hazırlanılmadığı için çöker. Ziyaretçi sayısı tek başına bir sunucuyu devirmez; her isteğin veritabanına gitmesi, PHP işçi havuzunun dolması ve kaynak limitine dayanılması devirir. Doğru hazırlık üç adımdan oluşur: önbellek, doğru kaynak katmanı ve kampanya öncesi yük testi.
- İyi yapılandırılmış bir sunucu tarafı önbelleği, aynı donanımda kapasiteyi 10-50 kat artırabilir.
- Çökmenin en yaygın nedeni CPU/RAM limiti değil, önbelleklenemeyen sayfaların her istekte veritabanını yormasıdır.
- Kampanya trafiği öngörülebilir: kaynağı önceden geçici olarak yükseltmek en ucuz sigortadır.
- Viral trafik öngörülemez: burada tek çare, önceden kurulmuş önbellek ve hızlı dikey yükseltme imkânıdır.
- Alastyr’da bulut sunucuda CPU/RAM artışı dakikalar içinde, kesintisiz yapılır; kampanya sonrası geri düşürülebilir.
Trafik artışına hazırlanmanın yolu, sitenin çoğu sayfasını sunucu tarafı önbellekten yayınlamak, veritabanına giden istek sayısını en aza indirmek, PHP işçi ve kaynak limitlerini beklenen eş zamanlı ziyaretçi sayısına göre yükseltmek ve bunu kampanyadan önce gerçek bir yük testiyle doğrulamaktır. Hazırlık günler değil, saatler sürer; yapılmadığında ise kayıp doğrudan ciroya yazılır.
Yıl içinde birkaç gün vardır ki bir web sitesi için diğer 360 günden daha değerlidir: indirim haftası, bir televizyon programında anılmak, sosyal medyada tutan bir gönderi, yeni ürün lansmanı. Bu anlarda site açılmıyorsa, o trafiğin geri gelme ihtimali neredeyse yoktur. Kötü haber şu: siteler tam da bu anlarda çöker. İyi haber ise, çökme nedenlerinin büyük çoğunluğunun önceden bilinebilir ve önlenebilir olmasıdır.
Bu rehberde önce sitelerin yoğun trafikte neden çöktüğünü teknik olarak açıklıyoruz, ardından trafik senaryosuna göre hazırlık planını, kampanya öncesi kontrol listesini ve doğru barındırma katmanını nasıl seçeceğinizi ele alıyoruz.
Yoğun Trafik Bir Siteyi Nasıl Çökertir?
Yaygın inanışın aksine sunucular “çok ziyaretçi geldiği için” durmaz. Duran şey, isteği işleyen zincirdeki en dar halkadır. Tipik bir WordPress veya WooCommerce sayfası açıldığında; web sunucusu isteği alır, PHP bir işçi süreci ayırır, PHP onlarca veritabanı sorgusu çalıştırır, sonuç HTML’e dönüştürülür ve ziyaretçiye gönderilir. Bu zincir tek ziyaretçi için milisaniyeler sürer. Aynı anda 300 kişi geldiğinde ise şu olur:
PHP işçi havuzu (örneğin 20 işçi) dolar. 21. istek kuyruğa girer. Kuyruk büyüdükçe her isteğin bekleme süresi uzar; sayfa 1 saniyede değil 15 saniyede açılır. Ziyaretçi sabırsızlanıp yeniler; bu, kuyruğa bir istek daha ekler. Aynı anda veritabanı, aynı sorguları yüzlerce kez çalıştırdığı için kilitlenmeye başlar. Kaynak izolasyonu olan bir hesapta CPU tavanına dayanılır ve sunucu 503 hatası döndürür. Kısacası çöküş, ziyaretçi sayısının değil, her ziyaretçinin sunucuya kaç birim iş yaptırdığının sonucudur.
Buradaki kritik içgörü şudur: aynı donanımda, aynı ziyaretçi sayısıyla, iş yükünü 50 kat azaltmak mümkündür. Bunun adı önbellektir.
Çökme Sebepleri ve Önlemleri
| Çökme sebebi | Belirtisi | Önlem |
|---|---|---|
| CPU / RAM limiti aşımı | Yoğun saatte yavaşlama, 503 ve 508 hataları, panelde kaynak uyarısı | Önbellekle iş yükünü düşürün; yetmiyorsa kampanya öncesi kaynağı geçici olarak yükseltin veya ayrılmış kaynaklı katmana geçin |
| PHP işçi (worker) havuzunun dolması | Site ayakta ama sayfalar dakikalarca açılmıyor, istekler kuyrukta bekliyor | Önbelleklenmiş sayfalar PHP’yi hiç meşgul etmez; kalan dinamik istekler için işçi sayısını ve eş zamanlı süreç limitini artırın |
| Veritabanı kilidi ve yavaş sorgular | Sepet ve ürün sayfaları takılıyor, MySQL CPU’yu doldurmuş | Eksik indeksleri ekleyin, yavaş sorgu kaydını inceleyin, nesne önbelleği kullanın, otomatik kayıtları temizleyin |
| Önbelleklenemeyen sayfalar | Sepet, ödeme, üyelik ve arama sayfaları her istekte tam işleniyor | Bu sayfaları önbellekten hariç tutun ama sayıca sınırlayın; kalan tüm siteyi önbelleğe alın ki kaynak bu sayfalara kalsın |
| Eklenti ve tema şişkinliği | Tek sayfa 150+ sorgu, saniyeler süren yanıt | Kampanya öncesi gereksiz eklentileri devre dışı bırakın; her aktif eklenti kapasitenizden pay alır |
| Kontrolsüz bot ve tarayıcı trafiği | Gerçek ziyaretçi az ama CPU dolu | Zararlı bot trafiğini engelleyin, arama motoru tarama hızını sınırlayın, XML-RPC gibi kullanılmayan uçları kapatın |
| Disk giriş/çıkış darboğazı | Yük altında her şey yavaşlıyor, disk beklemesi yüksek | NVMe tabanlı depolama kullanın; dönen diskte yoğun trafik altında toparlanma şansı düşüktür |
Trafik Senaryosuna Göre Hazırlık
Her site aynı hazırlığa ihtiyaç duymaz. Doğru yaklaşım, sitenin hangi trafik senaryosuyla karşılaşacağını dürüstçe tahmin edip hazırlığı ona göre ölçeklendirmektir.
| Senaryo | Tipik yük | Önbellek stratejisi | Kaynak hazırlığı | Uygun katman |
|---|---|---|---|---|
| Normal trafik Günlük düzenli ziyaret |
Aylık birkaç bin – birkaç on bin ziyaretçi, öngörülebilir dağılım | Sunucu tarafı sayfa önbelleği açık, tarayıcı önbelleği ayarlı; ek çaba gerekmez | Standart paket yeterli; kaynak kullanımını ayda bir kontrol edin | Paylaşımlı hosting (CloudLinux izolasyonlu) |
| Kampanya trafiği Planlı, tarihi belli |
Normalin 5-20 katı, birkaç saate sıkışmış eş zamanlı ziyaret | Agresif sayfa önbelleği + nesne önbelleği; sepet/ödeme hariç tutulur, kategori ve ürün sayfaları tam önbelleklenir | Kampanyadan 3-7 gün önce CPU/RAM ve işçi sayısı yükseltilir, sonra geri düşürülür | Bulut sunucu veya VDS |
| Viral trafik Ani, öngörülemez |
Normalin 50-500 katı, dakikalar içinde tepe noktası | Tüm anonim trafiğin önbellekten yayınlanması şart; önbellek isabet oranı %95’in altına düşerse hiçbir kaynak yetmez | Hızlı dikey yükseltme imkânı önceden hazır olmalı; ölçeklenme dakikalar içinde yapılabilmeli | Bulut sunucu veya fiziksel sunucu |
Tablodaki en önemli satır ortadaki. Kampanya trafiği öngörülebilir olduğu için, hazırlıksız yakalanmanın hiçbir mazereti yoktur. Viral trafik ise sürpriz gelir; ona karşı tek savunmanız, sürpriz gelmeden önce kurulmuş bir önbellek katmanı ve hızlı büyüyebilen bir altyapıdır.
Önbellek: Kapasiteyi Katlayan Tek Ayar
Önbellek, bir sayfanın hazırlanmış hâlini saklayıp sonraki ziyaretçilere doğrudan sunmaktır. Önbelleksiz bir sitede 1.000 ziyaretçi, sunucuya 1.000 kez tam iş yaptırır. Önbellekli bir sitede aynı 1.000 ziyaretçinin belki 20’si sunucuya iş yaptırır, kalan 980’i hazır dosyayı alır. Aradaki fark, aynı donanımda onlarca kat kapasitedir.
Alastyr paylaşımlı ve bulut paketlerinde web sunucusu olarak LiteSpeed kullanılır ve LSCache devrededir. Buradaki fark, önbelleğin PHP içinde değil, doğrudan web sunucusu seviyesinde tutulmasıdır: önbellekten karşılanan bir istek PHP’yi hiç uyandırmaz, veritabanına hiç dokunmaz. Yoğun trafikte kritik olan tam da budur; çünkü çökmeye giden yol her zaman PHP ve veritabanından geçer.
Buna eklenmesi gereken ikinci katman nesne önbelleğidir (object cache). Sepet gibi kişiye özel, önbelleklenemeyen sayfalar bile tekrarlanan sorguları belleğe alarak hafifletilir. Üçüncü katman, statik dosyalar için tarayıcı önbelleği ve sıkıştırmadır: görseller, CSS ve JavaScript dosyaları ziyaretçinin tarayıcısında saklanır, sunucudan tekrar istenmez.
Dürüst Olalım: Önbellek Her Şeyi Çözmez
Bir e-ticaret sitesinde sepet, ödeme, üye girişi ve canlı stok sorguları doğası gereği önbelleklenemez. Kampanya anında bu sayfaların yükü gerçektir ve gerçek kaynak ister. İşte “yoğun trafikte limit aşımı” şikâyetlerinin çoğu buradan doğar: site ürün sayfalarını önbellekten hızlıca yayınlar ama hepsi aynı anda sepete giden yüzlerce kullanıcı, paylaşımlı bir hesabın CPU ve süreç limitini gerçekten zorlar. Bu, sağlayıcının kötü niyeti değil, paylaşımlı modelin tanımıdır: kaynaklar izole ve sınırlıdır.
Doğru çözüm de burada netleşir: dönüşüm hacminiz büyüdüyse, kampanya günlerinizde ayrılmış kaynaklı bir katmanda olmanız gerekir. Alastyr’ın büyüyen altyapı yaklaşımı tam olarak bunun için vardır: proje paylaşımlı hostingte başlar, ihtiyaç arttığında VDS’e, bulut sunucuya, gerekirse fiziksel sunucuya ücretsiz ve kesintisiz taşınır. Kampanya öncesi bulut sunucuda CPU/RAM’i geçici olarak yükseltmek, kampanya bitince geri düşürmek dakikalar süren bir işlemdir.
Kampanya Öncesi Kontrol Listesi
Aşağıdaki sırayı kampanya tarihinden en az bir hafta önce başlatın. Her adım bir öncekine dayandığı için sıra önemlidir.
- Beklenen yükü sayıya dökün. Geçen yılın veya son kampanyanın analitik verisine bakın: tepe saatteki eş zamanlı ziyaretçi sayısı neydi? Bu yıl kaç kat bekliyorsunuz? Elinizde sayı yoksa hazırlık değil, tahmin yapıyorsunuz demektir.
- Yük testi yapın. Kampanya trafiğini önceden simüle edin. Testi düşük trafikli bir gece saatinde çalıştırın, sunucunun kaç eş zamanlı istekte yavaşlamaya başladığını ölçün. Kırılma noktanızı kampanya günü öğrenmeyin.
- Önbelleği kurun ve doğrulayın. Sunucu tarafı sayfa önbelleğini etkinleştirin. Sonra tarayıcıda çıkış yapmış hâlde gezinip yanıt başlıklarında önbellek isabeti (cache hit) olduğunu gerçekten doğrulayın. Kurulu ama çalışmayan bir önbellek eklentisi, kurulu olmayandan daha tehlikelidir; çünkü yanlış bir güven verir.
- Önbellek dışı sayfaları sınırlayın. Yalnızca sepet, ödeme ve hesap sayfaları hariç tutulsun. Yanlışlıkla tüm siteyi önbellek dışına iten kurallar (oturum çerezi, gereksiz istisnalar) varsa temizleyin.
- Gereksiz yükü kesin. Kullanılmayan eklentileri devre dışı bırakın, zamanlanmış görevleri kampanya saatlerinin dışına alın, yedekleme ve toplu e-posta işlerini tepe saatlerden uzaklaştırın, zararlı bot trafiğini engelleyin.
- Veritabanını hazırlayın. Yavaş sorguları belirleyip eksik indeksleri ekleyin, gereksiz revizyon ve geçici kayıtları temizleyin, tabloları optimize edin.
- Kaynağı yükseltin. Yük testi ve önbellek çalışmasına rağmen tepe yükün kaynak limitinizi zorlayacağı görülüyorsa, kampanyadan birkaç gün önce CPU, RAM ve eş zamanlı süreç limitlerinizi yükseltin. Bulut sunucuda bu işlem kesintisizdir ve kampanya sonrası geri alınabilir. Doğru zamanlama: kampanyadan önce, kampanya sırasında değil.
- Tam yedek alın ve yedeği test edin. Kampanya öncesi dosya ve veritabanının tam kopyasını alın. Yedeğin geri yüklenebildiğini doğrulayın; denenmemiş yedek, yedek sayılmaz.
- İzlemeyi açın. Çalışma süresi (uptime) izleme, sunucu kaynak grafikleri ve hata kaydı takibi kampanya boyunca açık kalsın. Bir uyarı kanalı belirleyin: site yavaşladığında bunu ziyaretçiden değil izleme sisteminden öğrenmelisiniz.
- Geri dönüş planını yazın. Sorun çıkarsa ne yapacağınızı önceden karara bağlayın: son değişikliği geri alma, ağır bir özelliği (canlı arama, öneri modülü, anlık stok göstergesi) geçici kapatma, statik bir kampanya sayfasına yönlendirme ve destek ekibiyle temas noktası. Kriz anında plan yazılmaz, plan uygulanır.
Kampanya Günü: Neye Bakılır?
Kampanya başladığında izlenecek üç sayı vardır. Birincisi yanıt süresi: sayfaların açılma süresi normalin iki katına çıkmışsa erken uyarıdasınız demektir. İkincisi kaynak kullanımı: CPU sürekli tavana yapışıksa, kalan tek hamle kaynak yükseltmedir. Üçüncüsü hata oranı: 503 ve 500 hataları görünmeye başladıysa sistem kapasitesini aşmıştır ve ziyaretçi kaybediyorsunuz.
Bu üç sinyalden herhangi biri kırmızıya döndüğünde yapılacak iş bellidir: önce yükü azaltın (ağır özellikleri kapatın), sonra kaynağı büyütün. Alastyr’da bulut sunucu kaynaklarının dikey yükseltmesi dakikalar içinde tamamlanır ve 7/24 destek ekibi kampanya günlerinde bu müdahaleye hazırdır. All-flash NVMe depolama, kendi veri merkezimiz ve %99,9 uptime taahhüdü bu hazırlığın altyapı tarafını oluşturur; hazırlığın site tarafı ise size aittir.
Sıkça Sorulan Sorular
Sitem yoğun trafikte neden çöküyor?
Neredeyse her zaman tek bir nedenden: her ziyaretçi isteğinin sunucuya tam iş yaptırmasından. Önbellek devrede değilse her istek PHP’yi çalıştırır ve veritabanına onlarca sorgu gönderir. Eş zamanlı ziyaretçi sayısı arttığında PHP işçi havuzu dolar, kuyruk büyür ve kaynak limiti aşılır. Çöküşün nedeni ziyaretçi sayısı değil, ziyaretçi başına harcanan kaynaktır.
Paylaşımlı hosting kampanya trafiğini kaldırır mı?
Sitenin büyük kısmı önbellekten yayınlanabiliyorsa ve kampanya normalin birkaç katıysa evet, kaldırır. Ancak yüzlerce kişi aynı anda sepet ve ödeme adımına giriyorsa bu sayfalar önbelleklenemez ve gerçek kaynak ister. Bu noktada paylaşımlı hesabın CPU ve süreç limitleri gerçekten zorlanır. Ciddi kampanya yapan bir mağaza, kampanya döneminde ayrılmış kaynaklı bir katmanda olmalıdır.
Önbellek kapasitemi ne kadar artırır?
Önbellek isabet oranına bağlı olarak aynı donanımda 10 ila 50 kat arasında bir kapasite farkı görülür. LiteSpeed sunucu üzerinde LSCache ile önbellekten karşılanan istek PHP’yi hiç uyandırmaz ve veritabanına hiç dokunmaz; sunucu yalnızca hazır bir dosyayı gönderir. Yoğun trafikte hayat kurtaran fark budur.
Kampanya öncesi kaynak yükseltmesi ne zaman yapılmalı?
Kampanyadan 3 ila 7 gün önce. Böylece yükseltilmiş kaynak üzerinde bir kez daha yük testi yapabilir, beklenmedik bir yapılandırma sorununu sakin bir günde çözebilirsiniz. Kampanya başladıktan sonra yapılan yükseltme geç kalmış bir müdahaledir; o sırada zaten ziyaretçi kaybediyorsunuzdur.
Kampanya bitince yükseltilen kaynağı geri düşürebilir miyim?
Evet. Bulut sunucuda kaynak artışı kalıcı bir taahhüt değildir; kampanya dönemi için geçici olarak yükseltip sonrasında geri düşürebilirsiniz. Bu esneklik, kampanya sigortasını çok makul bir maliyetle satın almanızı sağlar. Alastyr destek ekibi bu geçici yükseltme ve geri düşürme işlemlerini planlayarak yürütür.
Yük testini nasıl yaparım ve neye bakarım?
Kampanya trafiğine benzer bir eş zamanlı istek yükünü, düşük trafikli bir saatte siteye yöneltin. Bakacağınız üç şey vardır: sitenin yavaşlamaya başladığı eş zamanlı kullanıcı sayısı, hata dönmeye başladığı nokta ve bu sırada CPU ile RAM kullanımı. Bulduğunuz kırılma noktası beklenen tepe yükün altındaysa, ya önbellek isabetini artırmanız ya da kaynağı yükseltmeniz gerekir.
Sepet ve ödeme sayfaları önbelleklenebilir mi?
Hayır, bu sayfalar kişiye özeldir ve önbelleklenmemelidir; aksi hâlde bir kullanıcı başkasının sepetini görebilir. Doğru strateji, bu sayfaları önbellek dışında tutup diğer her şeyi önbelleğe almaktır. Böylece sunucunun tüm kaynağı gerçekten dinamik olan bu kritik sayfalara ayrılmış olur. Nesne önbelleği de bu sayfalardaki tekrarlanan sorguları hafifletir.
Trafik ani ve öngörülemezse (viral içerik) ne yapılabilir?
Viral trafikte hazırlık yapacak vaktiniz yoktur; savunmanız zaten kurulmuş olmalıdır. Anonim ziyaretçilerin gördüğü tüm sayfalar önbellekten yayınlanıyorsa, mütevazı bir sunucu bile çok yüksek eş zamanlı yükü karşılayabilir. İkinci savunma hattı, kaynağı dakikalar içinde büyütebilme imkânıdır; bu yüzden büyüme ihtimali olan projelerin bulut sunucu gibi hızlı ölçeklenebilen bir katmanda durması önerilir.
Kaynak yükseltmek her sorunu çözer mi?
Hayır. Kötü yazılmış bir sorgu, eksik bir veritabanı indeksi veya her sayfada 150 sorgu çalıştıran şişkin bir tema, kaynak eklendikçe daha pahalı hâle gelir ama düzelmez. Doğru sıra şudur: önce iş yükünü azaltın (önbellek, veritabanı optimizasyonu, gereksiz eklentilerin kaldırılması), sonra kalan gerçek yük için kaynağı büyütün. Aksi sırada para harcar, sorunu çözemezsiniz.
Kampanya gününüz sunucunuzu değil, cironuzu konuşsun
LiteSpeed ve LSCache ile katlanan kapasite, CloudLinux kaynak izolasyonu, all-flash NVMe depolama, %99,9 uptime taahhüdü ve 7/24 destek. Bulut sunucuda kaynağınızı kampanya öncesi kesintisiz yükseltin, kampanya bitince geri düşürün. Katmanlar arası taşıma ücretsizdir.





