29,712
Toplam Şarkı
1,727
Kullanıcı
589
Aktif Abonelik
~50K
Günlük Dinleme
Sunucu Donanımı
DONANIM
| CPU | Intel Xeon Gold 6554S |
| Core/Thread | 36 Core / 72 Thread |
| RAM | 251 GB (22GB kullanımda) |
| Disk | 885 GB (362GB kullanımda, %41) |
| Uptime | 11 gün |
YAZILIM
| OS | AlmaLinux 9.7 |
| Web Server | Nginx 1.28 |
| Database | MariaDB 11.4 |
| Cache | Redis 6.2 (4.53GB, 627K key) |
| Queue Workers | 63 aktif |
Sunucu çok güçlü. 72 thread, 251GB RAM - sorun donanım değil.
Veritabanı (tenant_muzibu_1528d0)
İÇERİK
| Toplam Şarkı | 29,712 |
| Aktif Şarkı | 29,703 |
| HLS Dönüştürülmüş | 29,657 (%99.8) |
| Albüm | 657 |
| Sanatçı | 44 |
| Tür | 39 |
KULLANICI
| Toplam Kullanıcı | 1,727 |
| Aktif Abonelik | 589 (%34) |
| Playlist | 758 |
TABLO BOYUTLARI
| song_plays | 187 MB |
| media | 32 MB |
| songs | 30 MB |
| activity_log | 26 MB |
Dinleme İstatistikleri (Son 14 Gün)
GÜNLÜK VERİLER
| 19 Ocak (Bugün) | 29,338 |
| 18 Ocak | 50,574 |
| 17 Ocak | 60,826 |
| 16 Ocak | 60,849 |
| 15 Ocak | 45,194 |
| 14 Ocak | 921 |
| 13 Ocak ve öncesi | <1000 |
ÖZET
248,688
Son 7 gün toplam
~50,000
Günlük ortalama (aktif günler)
14 Ocak öncesi düşük - sistem yeni aktif olmuş görünüyor
Storage Analizi
DOSYA BOYUTLARI
| MP3 Dosyaları | 128 GB |
| HLS Dosyaları | 183 GB |
| Toplam Tenant Storage | 333 GB |
| Kalan Disk | 524 GB (%59) |
DOSYA SAYILARI
| MP3 Dosyası | 40,988 |
| HLS Playlist (.m3u8) | 29,657 |
| Ortalama Şarkı Boyutu | ~4.3 MB (MP3) |
HLS = MP3'ün ~1.43 katı (encryption overhead)
HLS Stream Yapısı
YAPILANDIRMA
| Segment Süresi | 10 saniye |
| Şifreleme | AES-128 |
| Segment Boyutu | ~350 KB |
| Ortalama Şarkı | ~22 segment |
ÖRNEK HLS KLASÖRÜ
hls/32295/
├── playlist.m3u8 (996 B)
├── enc.bin (16 B - AES key)
├── enc.keyinfo
├── segment-000.ts (351 KB)
├── segment-001.ts (351 KB)
├── ... (22 segment)
└── segment-022.ts (295 KB)
Player Analizi
DOSYALAR
| player-core.js | 7,717 satır |
| safe-storage.js | 38 satır |
| Features (6 dosya) | ~1,500 satır |
| SongStreamController | 858 satır |
TEKNOLOJİLER
HLS.js
Howler.js
Alpine.js
AES-128
7,717 satır = karmaşık kod, hata potansiyeli yüksek
TESPİT EDİLEN SORUNLAR
HLS Fatal Error Handler
Eski HLS instance temizlenmiyor → memory leak
Blob URL Leak
revokeBlobUrl() tanımlı ama çağrılmıyor
Buffer Timeout
3sn timeout, buffer kontrolsüz kapatılıyor
Interval Birikimi
Progress tracking interval'lar üst üste
Cloudflare Pro
MEVCUT DURUM
| Plan | Cloudflare Pro |
| cf-ray | CDG (Paris) |
| Cache Status | DYNAMIC |
| SSL | Full (Strict) |
SORUN
cf-cache-status: DYNAMIC = HLS dosyaları cache'lenmiyor!
Her segment isteği origin sunucuya gidiyor. 50K dinleme × 22 segment = 1.1M request/gün direkt sunucuya.
Cloudflare cache kuralları ayarlanırsa sunucu yükü %80 düşer
Bandwidth Hesabı
# Günlük Bandwidth Hesabı
Günlük dinleme: 50,000
Ortalama şarkı: 8 MB (HLS encrypted)
Günlük traffic: 50,000 × 8MB = 400 GB/gün
Aylık traffic: 400 × 30 = 12 TB/ay
100K/gün olursa: 24 TB/ay
Cloudflare Pro ile
Sınırsız bandwidth dahil. 24TB/ay = $25/ay
Sunucu bandwidth
OVH'de dahil. Ekstra maliyet yok (şu an).
Sonuç ve Öneriler
Sunucu
Çok güçlü (72 thread, 251GB RAM). Donma sorunu donanımdan değil.
Player Kodu
7,717 satır karmaşık kod. Memory leak ve race condition sorunları var. Düzeltmek mümkün.
Cloudflare Cache
HLS segmentleri cache'lenmiyor (DYNAMIC). Cache kuralı eklenirse sunucu yükü %80 düşer.
Harici CDN Gerekli mi?
Hayır. Cloudflare Pro + doğru cache kuralları yeterli. Bunny/Mux'a gerek yok.
Yapılması Gerekenler
- 1. Player kodundaki 4 kritik hatayı düzelt (ücretsiz)
- 2. Cloudflare'de HLS cache kuralı ekle (ücretsiz)
- 3. Buffer durumu için loading spinner ekle (UX)