Muzibu Performans Optimizasyonu

Güncel Sistem Analizi + Kod İncelemesi - v5

72 Çekirdek Sunucu Cloudflare Pro 17 Şubat 2026 Versiyon 5 (Güncellenmiş)

Güncel Sistem Durumu (17 Şubat 2026)

Basit Anlatım

İyi Haber: Sunucu öncekine göre çok daha rahat!

İyileşen Durumlar

  • ✅ Sunucu yükü %90 azaldı (17 → 1.6)
  • ✅ PHP işçileri 9 kat azaldı (54 → 6)
  • ✅ Sistem çok daha hızlı tepki veriyor

Hala Sorunlu

  • ⚠️ Route/Config cache hala YOK
  • ⚠️ Segment'ler Cloudflare'den gelmiyor
  • ⚠️ API hızı değişmedi (83ms)

Teknik Veriler (Canlı Ölçüm)

1.61

Load Average

↓ 17.36'dan düştü

6

PHP Process

↓ 54'ten düştü

197

Redis Client

≈ 241 ile benzer

83ms

API Latency

→ Değişmedi

Kalan 3 Kritik Sorun:

  1. 1. Route/Config cache YOK → bootstrap/cache/ içinde config.php, routes.php yok
  2. 2. Segment'ler CF cache'te değil → cf-cache-status: MISS
  3. 3. API latency sabit → Cache olmadan 80-100ms civarı

v4 vs v5 Karşılaştırması

Metrik v4 (13 Şubat) v5 (17 Şubat) Değişim
Load Average 17.36 1.61 ↓ %91
PHP Process 54 6 ↓ %89
Redis Clients 241 197 ≈ Benzer
API Latency 80-120ms 83ms → Sabit
Route Cache YOK YOK ! Aynı
Config Cache YOK YOK ! Aynı
CF Segment Cache Belirsiz MISS ! Çalışmıyor

Yorum: Sunucu yükü dramatik şekilde düştü (muhtemelen kullanıcı trafiği azaldı veya başka optimizasyonlar yapıldı). Ancak altyapısal sorunlar (cache eksikliği) hala devam ediyor. API latency değişmedi çünkü her istek hala sıfırdan işleniyor.

HLS Streaming Kod Analizi

Basit Anlatım - Mevcut Sistem Nasıl Çalışıyor?

1. Playlist İste

Şarkının parça listesini al

Token gerekli ✓

2. Segment İndir

10 saniyelik parçaları al

Token YOK (cache için)

3. Key Al

Şifre çözme anahtarı

Token gerekli ✓

Güvenlik Mantığı:

Segment'ler şifreli (AES-128), key olmadan çalışmaz. Bu yüzden segment'ler public olabilir → Cloudflare cache'lenebilir. Ama key korumalı → Sadece üyeler alabilir.

Teknik Detay - SongStreamController Analizi

HLS.js Buffer Ayarları:

// Normal mod
maxBufferLength: 150  // saniye
maxMaxBufferLength: 250
maxBufferSize: 200MB
maxBufferHole: 2.5

// Preload mod
maxBufferLength: 600  // 10 dakika!
maxMaxBufferLength: 600
maxBufferSize: 200MB

✅ Buffer ayarları agresif ve iyi

Segment Serve Mantığı:

// playlist.m3u8
Token: Gerekli
Cache: no-cache

// segment-*.ts
Token: YOK // CF cache için
Cache: 1 yıl, immutable

// enc.bin (key)
Token: Gerekli
Cache: 1 yıl // ama CF'de değil

Doğru Yapılanlar:

  • ✅ Segment'lere token eklenmiyor → CF cache için uygun
  • ✅ URL'ler XOR şifreleniyor → Console'da görünmüyor
  • ✅ Key endpoint korumalı → Signature doğrulaması var
  • ✅ AES-128 şifreleme → Segment'ler public olsa bile güvenli
  • ✅ MuzibuCacheService → Song bilgileri Redis'te (24h TTL)

Sorun: Segment'ler Neden CF Cache'te Değil?

# curl -I segment isteği:
cf-cache-status: MISS  ← SORUN!

# Olması gereken:
cf-cache-status: HIT

Muhtemel Nedenler:

  • 1. Cloudflare Page Rules tanımlı değil
  • 2. .ts uzantısı CF'de varsayılan cache listesinde değil
  • 3. Laravel response header'ları CF'yi engelliyor olabilir

Laravel Cache Sorunları (KRİTİK!)

1

Route ve Config Cache HALA YOK!

KRİTİK

Basit Anlatım:

Her sayfa isteğinde Laravel 100+ dosyayı okuyor ve yüzlerce route'u hesaplıyor. Cache olsa? Tek dosyadan okuyor, bitti. 30-50ms tasarruf!

Teknik:

# bootstrap/cache/ içeriği (17 Şubat 2026)
modules.php    (4.4KB)
packages.php   (6.4KB)
services.php   (27.8KB)
config.php    ✗ YOK!
routes-v7.php ✗ YOK!

v4 raporundan beri hiç değişmedi! Bu cache'ler hala oluşturulmamış.

Hemen Uygulanabilir Çözüm

# 1. Config cache oluştur
php artisan config:cache

# 2. Route cache oluştur
php artisan route:cache

# 3. Kontrol et
ls -la bootstrap/cache/

# Beklenen sonuç:
config.php     ✓
routes-v7.php  ✓

Not: Bu komutlar güvenli. Sadece cache dosyaları oluşturur, hiçbir şeyi silmez.

Cloudflare Segment Cache Sorunu

Basit Anlatım

Neden Önemli?

Şu an (MISS)

🇹🇷 İstanbul kullanıcısı şarkı açıyor...

→ İstek Cloudflare İstanbul'a gider

→ CF: "Bende yok, sunucudan alayım"

→ Almanya sunucusuna gider

+100ms gecikme!

Olması gereken (HIT)

🇹🇷 İstanbul kullanıcısı şarkı açıyor...

→ İstek Cloudflare İstanbul'a gider

→ CF: "Bende var, hemen veriyorum!"

10ms'de teslim!

Teknik Çözüm

Mevcut Durum:

# segment-000.ts isteği
curl -I https://www.muzibu.com/hls/song/1/segment-000.ts

cf-cache-status: MISS
# veya 404 (şarkı olmadığı için)

Cloudflare Page Rules Önerisi:

URL Pattern: www.muzibu.com/hls/song/*/segment-*.ts

Settings:
  Cache Level: Cache Everything
  Edge Cache TTL: 1 month
  Browser Cache TTL: 1 year
  Origin Cache Control: On

# Alternatif: Transform Rules ile
Cache-Control header ekle:
  public, max-age=31536000, immutable

Önemli Not:

Kod tarafında segment'lere Cache-Control: public, max-age=31536000, immutable header'ı zaten ekleniyor. Sorun Cloudflare tarafında olabilir:

  • • .ts uzantısı CF'de "cacheable" listesinde olmayabilir
  • • Page Rule tanımlı olmayabilir
  • • Development mode açık olabilir

Güncellenmiş Çözüm Planı

Öncelik Çözüm Durum Etki Risk
1 Route & Config Cache BEKLEMEDE -30-50ms Düşük
2 Cloudflare Segment Cache ÇALIŞMIYOR Donma azalır Düşük
3 Sunucu Yükü Optimizasyonu ✓ DÜZELDI Load %91 ↓ -
4 PHP Process Sayısı ✓ DÜZELDI 54 → 6 -
5 HLS Buffer Ayarları ✓ İYİ Zaten optimal -

HEMEN Yapılması Gerekenler

1 Laravel Cache Aktifle
php artisan config:cache && php artisan route:cache
2 Cloudflare Page Rule Ekle

Cloudflare Dashboard → Rules → Page Rules:

URL: www.muzibu.com/hls/song/*/segment-*.ts
Cache Level: Cache Everything
Edge TTL: 1 month

Sonuç: Sunucu performansı büyük ölçüde iyileşmiş (load %91 düştü). Ancak 2 kritik optimizasyon hala beklemede: Laravel cache ve Cloudflare segment cache. Bu ikisi yapıldığında API latency 83ms → 30-40ms'e, segment teslim süresi 100ms → 10ms'e düşebilir.

Rapor Geçmişi

v5 17 Şubat 2026 Güncel sistem ölçümleri + kod analizi + karşılaştırma
v4 13 Şubat 2026 Birleşik rapor: Player donma + sunucu analizi
v3 13 Şubat 2026 HLS sistemi detaylı analiz
v2 13 Şubat 2026 Sunucu yükü analizi
v1 13 Şubat 2026 İlk analiz