Giriş
Web siteniz normalde hızlı olabilir. Ama trafik arttığında bir anda:
- Site yavaşlar
- Sayfalar geç açılır
- Hatta site tamamen çökebilir
Bu durum özellikle:
- Kampanya dönemlerinde
- Reklam çıkıldığında
- Viral içeriklerde
- Black Friday gibi günlerde
çok sık yaşanır.
Peki neden?
Çünkü çoğu sistem “yük altında” test edilmez.
Bu yazıda:
- Sunucu neden yüksek trafikte yavaşlar?
- Hangi kaynaklar tükenir?
- Nasıl önlenir?
tam teknik olarak anlatacağız.
1. Temel Problem: Resource Saturation
Sunucu yavaşlamasının ana sebebi:
Resource saturation (kaynak doygunluğu)
Yani:
- CPU dolu
- RAM dolu
- Disk I/O dolu
- PHP worker dolu
Bu durumda:
Yeni request → bekler → latency artar → TTFB artar → site yavaşlar
2. CPU Bottleneck
Her request CPU kullanır:
- PHP çalışır
- Plugin çalışır
- Query işlenir
Yüksek trafikte:
| Trafik | CPU |
|---|---|
| 10 user | %20 |
| 50 user | %70 |
| 100 user | %100 |
CPU %100 olduğunda:
- İşlem kuyruğu oluşur
- Response gecikir
- TTFB yükselir
3. RAM Problemi
RAM dolduğunda:
- Swap başlar (disk kullanılır)
- Disk → RAM’den çok daha yavaştır
Sonuç:
RAM dolu → swap → disk I/O ↑ → latency ↑ → site yavaş
4. Disk I/O Bottleneck
Özellikle cache yoksa:
- Her request disk okur
- Her query disk bekler
Yüksek trafikte:
| Disk | Performans |
|---|---|
| HDD | Çok kötü |
| SSD | Orta |
| NVMe | İyi |
Disk yavaşsa:
Query wait → PHP block → TTFB ↑
5. PHP Worker Limiti (EN KRİTİK)
Bu en çok göz ardı edilen konu:
| Worker | Aynı Anda İşlenen Request |
|---|---|
| 2 | 2 |
| 4 | 4 |
| 8 | 8 |
Eğer 50 kişi gelirse:
8 işlem yapılır → 42 kişi bekler
Bu da:
- Queue oluşur
- Bekleme süresi artar
- Site “yavaş” görünür
6. Cache Yoksa Sistem Çöker
Cache yoksa her request:
PHP + DB + Disk + CPU
Cache varsa:
Static response → CPU düşük
Karşılaştırma:
| Sistem | 100 user |
|---|---|
| Cache yok | Çöker |
| Cache var | Stabil |
7. Database Bottleneck
Veritabanı yükü artınca:
- Query sayısı artar
- Lock oluşur
- Slow query oluşur
Özellikle:
- WooCommerce
- Filtreleme
- Arama
çok yük oluşturur.
8. Network Limiti
Bazı durumlarda problem sunucu değil:
- Bandwidth dolu
- DDoS benzeri trafik
- CDN yok
Bu durumda:
Network saturation → packet delay → site yavaş
9. Gerçek Dünya Senaryosu
Cache olmayan bir site:
| Trafik | TTFB | Durum |
|---|---|---|
| 10 user | 200 ms | Normal |
| 50 user | 800 ms | Yavaş |
| 100 user | 3000 ms | Çökme |
Cache olan site:
| Trafik | TTFB | Durum |
|---|---|---|
| 10 user | 120 ms | Normal |
| 50 user | 140 ms | Stabil |
| 100 user | 180 ms | Stabil |
10. Nasıl Önlenir?
1. Cache Kullanın
En önemli çözüm:
Page Cache + Redis + CDN
2. PHP Worker Artırın
Yüksek trafik için:
| Trafik | Worker |
|---|---|
| Küçük site | 2–4 |
| Orta | 4–8 |
| Büyük | 8–16 |
3. CPU ve RAM Artırın
Ama tek başına yeterli değildir:
Cache yoksa CPU artırmak çözüm değildir.
4. CDN Kullanın
- Statik yükü azaltır
- Origin server rahatlar
5. Database Optimize Edin
- Index kullan
- Slow query temizle
- Gereksiz plugin kaldır
6. Load Test Yapın
Çok kritik:
ab -n 1000 -c 50 https://site.com
Alternatif araçlar:
- k6
- JMeter
11. En İyi Mimari
CDN
+
Page Cache
+
Redis
+
PHP 8+
+
NVMe
+
Yeterli CPU & RAM
Bu yapı yüksek trafikte stabil kalır.
12. Özet
| Problem | Çözüm |
|---|---|
| CPU dolu | Cache |
| RAM dolu | Optimize + upgrade |
| Disk yavaş | NVMe |
| Worker az | Worker artır |
| DB yavaş | Redis |
| Network | CDN |
SONUÇ
Sunucu yavaşlaması genelde:
❌ Trafik fazla olduğu için değil
✅ Sistem buna hazır olmadığı için olur
Doğru yapı:
Cache + Doğru kaynak + Doğru mimari = Stabil site