Özet Dashboard
72 CPU, 251GB RAM - Çok güçlü, sorun yok
7,717 satır kod, 4 kritik hata tespit edildi
Cache DYNAMIC - HLS cache'lenmiyor
Sunucu Analizi
Donanım
| Hostname | ns3265902.ip-51-210-24.eu |
| CPU | Intel Xeon Gold 6554S |
| Core / Thread | 36 Core / 72 Thread |
| CPU Freq | 800 MHz - 4000 MHz |
| RAM | 251 GB |
| RAM Kullanım | 22 GB kullanımda (%9) |
| Disk | 885 GB |
| Disk Kullanım | 362 GB (%41) |
| Load Average | 11.54, 9.91, 9.64 |
| Uptime | 11 gün 18 saat |
Yazılım Stack
| OS | AlmaLinux 9.7 |
| Kernel | 5.14.0-611.16.1.el9_7 |
| Web Server | Nginx 1.28 |
| PHP | 8.3.x |
| Database | MariaDB 11.4.9 |
| Cache | Redis 6.2.20 |
| Node.js | v24.13.0 |
| Panel | Plesk |
| Queue Workers | 63 aktif |
| Active Connections | 52 |
Redis İstatistikleri
Veritabanı Analizi
tenant_muzibu_1528d0
İçerik
| 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 (Genre) | 39 |
Kullanıcılar
| Toplam Kullanıcı | 1,727 |
| Aktif Abonelik | 589 (%34) |
| Playlist | 758 |
| Aktif Session | 666 |
Tablo Boyutları
| song_plays | 187 MB |
| media | 32 MB |
| songs | 30 MB |
| activity_log | 26 MB |
| playlist_song | 8 MB |
Dinleme İstatistikleri (Son 14 Gün)
| 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 |
Storage Analizi
Dosya Boyutları
| MP3 Dosyaları | 128 GB |
| HLS Dosyaları | 183 GB |
| Toplam Tenant Storage | 333 GB |
| Kalan Disk | 524 GB (%59) |
Dosya Sayıları
| MP3 Dosyası | 40,988 |
| HLS Playlist (.m3u8) | 29,657 |
| Ortalama MP3 Boyutu | ~4.3 MB |
| Ortalama HLS Boyutu | ~6.2 MB |
Dizin Yapısı
Player Analizi
Dosyalar
| player-core.js | 7,717 satır |
| safe-storage.js | 38 satır |
| api.js | ~200 satır |
| session.js | ~150 satır |
| spot-player.js | ~400 satır |
| spa-router.js | ~300 satır |
| SongStreamController.php | 858 satır |
Kullanılan Teknolojiler
State Variables
Player'da Tespit Edilen Sorunlar
HLS Fatal Error Handler Bozuk
Fatal HLS hatası olduğunda eski instance düzgün temizlenmiyor. Event listener'lar kalıyor → sonsuz döngü riski.
this.hlsNext.on(Hls.Events.ERROR, async function(event, data) {
if (data.fatal) {
// ❌ Eski HLS event listener'ları temizlenmiyor!
if (self.hlsNext) { self.hlsNext.destroy(); }
self.playSongFromQueue(nextIdx); // Recursive çağrı
}
});
Blob URL Memory Leak
revokeBlobUrl() fonksiyonu tanımlı ama hiç çağrılmıyor. Blob URL'ler birikip RAM'i şişiriyor.
const activeBlobUrls = new Set();
function revokeBlobUrl(blobUrl) {
// ✅ Fonksiyon var ama...
URL.revokeObjectURL(blobUrl);
}
// ❌ Hiçbir yerde çağrılmıyor!
Buffer Timeout Sorunu
Seek sırasında isSeeking=true kalıyor. 3 saniye sonra zorla kapatılıyor ama buffer yüklenmemişse müzik donmuş görünüyor.
setTimeout(() => {
if (self.isSeeking) {
self.isSeeking = false; // ❌ Buffer kontrolsüz kapatılıyor
}
}, 3000);
Progress Interval Birikimi
Progress tracking interval'ları her şarkıda yeniden başlatılıyor ama eski interval'lar temizlenmiyor. CPU kullanımı artıyor.
Safari Native HLS Deadlock
iOS Safari'de native HLS path kullanılıyor. audio.load() beklenmedik buffer eviction tetikleyebiliyor.
Spot Player Overlap
Anons (spot) audio elementi ve müzik player elementi çakışabiliyor. Anons bittikten sonra müzik başlamayabiliyor.
Donma Nasıl Oluşuyor?
HLS Stream Yapısı
Yapılandırma
| Segment Süresi | 10 saniye |
| Şifreleme | AES-128 |
| Ortalama Segment | ~350 KB |
| Ortalama Şarkı | ~22 segment |
| Job Timeout | 600 saniye |
Örnek Playlist
HLS Conversion Job
| Dosya | Modules/Muzibu/App/Jobs/ConvertToHLSJob.php |
| Queue | hls |
| Timeout | 600 saniye (10 dk) |
| Retry | 3 deneme |
| Pending Jobs | 0 |
| Failed Jobs | 0 |
Cloudflare Pro Analizi
Mevcut Durum
| Plan | Cloudflare Pro |
| cf-ray | CDG (Paris) |
| Cache Status | DYNAMIC ⚠️ |
| SSL | Full (Strict) |
Sorun
cf-cache-status: DYNAMIC
HLS segment dosyaları (.ts) cache'lenmiyor! Her istek origin sunucuya gidiyor.
Çözüm: Cache Rule Ekle
Cloudflare Dashboard → Rules → Cache Rules → Create Rule
Bu kural aktif olunca sunucu yükü %80 düşer.
Bandwidth Hesabı
Harici CDN Seçenekleri (Referans)
Yine de referans olarak fiyatları:
| Servis | Min. Fiyat | 30K Şarkı | 50K/gün | HLS |
|---|---|---|---|---|
| Cloudflare Pro (mevcut) | $25/ay | Dahil | Dahil | |
| Bunny Stream | $1/ay | ~$1.5 | ~$75 | |
| Cloudflare Stream | $5/ay | ~$600 | ~$90 | |
| Mux | $10/ay | ~$60 | ~$45 |
Sonuç ve Öneriler
İyi Olan
- • Sunucu çok güçlü (72 CPU, 251GB RAM)
- • HLS dönüşüm %99.8 tamamlanmış
- • AES-128 şifreleme aktif
- • Cloudflare Pro mevcut
- • Redis cache çalışıyor
Düzeltilmesi Gereken
- • Player kodu: 4 kritik hata
- • Cloudflare cache: DYNAMIC (kapalı)
- • Buffer durumu: UI feedback yok
- • Memory leak: Blob URL'ler
Yapılacaklar (Öncelik Sırasıyla)
Harici CDN'e gerek yok. Cloudflare Pro + kod düzeltmeleri yeterli.
Toplam maliyet: $0 (mevcut altyapı kullanılıyor)