Tüm Blog Yazılarına Dön
Performans 2026 Güncel Rehber

FiveM Profiler ve Chrome Tracing ile Darboğaz (Bottleneck) Analizi Rehberi (2026)

Resmon ekranının göremediği anlık mikro takılmaları (frame hitch) ve CPU darboğazlarını FiveM Profiler ile nokta atışı tespit edip çözmeyi öğrenin.

DX
Dexta Store Ekibi
12 Ekim 20269 dk okuma0 okuma
FiveM Profiler ve Chrome Tracing ile Darboğaz (Bottleneck) Analizi Rehberi (2026)

FiveM sunucunuzda oyuncular aniden FPS düşüşlerinden (micro-stutter), araç sürerken yaşanan 1 saniyelik mikro donmalardan (frame hitch) veya sunucunun anlık olarak donup geri gelmesinden mi şikayetçi? Çoğu sunucu sahibi hemen resmon 1 komutunu açar ve tüm kaynakların 0.04ms civarında çalıştığını görünce sorunun kaynağını bulamaz.

İşte kritik gerçek: Resmon yalnızca o anki ortalama döngü süresini gösterir; milisaniyelik CPU sıçramalarını, bloklanan ana iş parçacıklarını (thread blocking) ve senkron kilitlenmeleri yakalayamaz.

2026 standartlarında FiveM geliştiricileri, gizli performans katillerini yakalamak için FXServer'ın yerleşik Profiler aracını ve Google Chrome Tracing analiz motorunu kullanır. Bu rehberde, tek bir komutla sunucunuzdaki veya istemcinizdeki darboğazları nasıl röntgen gibi göreceğinizi adım adım inceliyoruz.

1. FiveM Profiler Nedir ve Neden Hayat Kurtarır?

Profiler, oyun motorunun ve FXServer'ın belirli sayıda kare (frame/tick) boyunca çalıştırdığı her bir fonksiyon çağrısını, döngüyü ve ağ olayını mikro-saniye hassasiyetinde kaydeden bir teşhis aracıdır.

  • Resmon: Anlık ortalamayı verir, gizli patlamaları kaçırır.
  • Profiler: "x scriptinin 142. satırındaki fonksiyon 45 milisaniye boyunca ana döngüyü kilitledi" diyerek sorunu doğrudan parmağıyla gösterir.
💡 İpucu: Oyuncular haritanın belirli bir yerine gittiğinde veya bir menü açıldığında ekran yarım saniye donuyorsa, bu tam bir "Hitch" sorunudur. Profiler bu anı yakalamak için en güçlü silahtır.

2. Adım Adım Sunucu Tarafında Profiler Kaydı Alma

Sunucu tarafında anlık tick gecikmeleri (Server Hitch Warnings) alıyorsanız txAdmin veya sunucu konsolunu kullanarak kayıt alabilirsiniz.

  1. 1Sunucu konsolunuza (live console) erişin.
  2. 2Aşağıdaki komutu girerek 500 tick boyunca kayıt başlatın:
cfg
profiler record 500
  1. 3Kayıt bittiğinde ekranda Profile recorded uyarısı belirecektir. Ardından bu analizi JSON dosyası olarak kaydedin:
cfg
profiler save profile_sunucu.json

Bu dosya, sunucunuzun ana dizininde (FXServer kök dizini) oluşturulacaktır.

3. İstemci (Client) Tarafında FPS Droplarını Kaydetme

Oyuncunun bilgisayarında oyun içi yaşanan anlık kasmaları teşhis etmek için F8 konsolunu kullanırız:

  1. 1Oyun içinde F8 konsolunu açın.
  2. 2Tam takılmanın yaşandığı aktiviteyi yapmadan hemen önce şu komutu yazın:
cfg
profiler record 300
  1. 3Takılmaya sebep olan eylemi gerçekleştirin (örneğin garajı açın veya kalabalık alana girin).
  2. 4Kayıt tamamlandığında masaüstünüze veya FiveM klasörünüze kaydetmek için:
cfg
profiler save profile_client.json

4. Kaydı Chrome Tracing (Perfetto) ile Görselleştirme

Oluşturduğunuz .json dosyasını çıplak gözle okumak imkansızdır. Bunu görsel bir "Flame Graph" (Alev Grafiği) haline getireceğiz:

  1. 1Google Chrome veya Edge tarayıcınızı açın.
  2. 2Adres çubuğuna chrome://tracing yazın (Alternatif olarak modern arayüz için ui.perfetto.dev sitesini kullanabilirsiniz).
  3. 3Sol üstteki Load butonuna tıklayın ve kaydettiğiniz profile_sunucu.json dosyasını seçin.
  4. 4Karşınıza yüzlerce yatay çubuktan oluşan bir zaman çizelgesi çıkacaktır.

Flamegraph Analizi

Grafiği Okuma Taktikleri:

  • Geniş Bloklar: Grafikte yatay olarak en çok yer kaplayan renkli blok, en çok zaman harcayan fonksiyondur.
  • Kırmızı İşaretler (Hitches): Normalde 16ms sürmesi gereken bir karenin 80ms sürdüğünü gösteren devasa sıçramalardır.
  • Bloğun üzerine tıkladığınızda alt panelde scriptin adı, fonksiyon ismi ve kaç milisaniye sürdüğü yazar.

5. Darboğaz Yaratan Kod Örneği ve Modern Çözümü

Profiler analizinde en sık karşılaşılan problem, her tick senkronize çalışan ağır arama döngüleridir.

❌ Hatalı Yaklaşım (Profilerde 25ms blok yaratan kod):

lua
-- client/main.lua
-- Her karede tüm dünyadaki pedleri tarayıp yakınlık hesabı yapmak FPS katilidir!
CreateThread(function()
    while true do
        Wait(0)
        local playerPed = PlayerPedId()
        local pCoords = GetEntityCoords(playerPed)
        
        -- GetGamePool ağır bir native çağrısıdır, her karede çağrılmamalıdır
        local peds = GetGamePool('CPed')
        for _, ped in ipairs(peds) do
            if #(pCoords - GetEntityCoords(ped)) < 2.0 then
                -- Etkileşim kontrolü
            end
        end
    end
end)

✅ Optimize Edilmiş Yaklaşım (Profilerde 0.01ms altına inen kod):

lua
-- client/main.lua
-- Mesafeye bağlı dinamik gecikme ve sleep optimizasyonu
CreateThread(function()
    while true do
        local sleep = 1000
        local playerPed = PlayerPedId()
        local pCoords = GetEntityCoords(playerPed)
        
        -- Havuz taramasını 1 saniyede bir yapıyoruz
        local peds = GetGamePool('CPed')
        for _, ped in ipairs(peds) do
            if ped ~= playerPed then
                local dist = #(pCoords - GetEntityCoords(ped))
                if dist < 5.0 then
                    sleep = 0 -- Sadece çok yakındaysa çizim moduna geç
                    -- İşlemler
                    break
                end
            end
        end
        Wait(sleep)
    end
end)
⚠️ Önemli Uyarı: Profiler raporunda JSON.parse, citizen::vfs veya v8::Context gibi bloklar görüyorsanız, sunucunuz aynı anda çok büyük NUI verileri veya devasa SQL tabloları aktarıyor demektir.

Performans Analizleriyle Vakit Kaybetmek İstemiyor musunuz?

Sunucunuzdaki darboğazları tek tek analiz edip kodları modernize etmek ciddi bir mühendislik eforu gerektirir. Eğer tüm altyapısı önceden test edilmiş, Profiler ve Chrome Tracing testlerinden tam not almış sıfır donma garantili bir altyapı arıyorsanız, optimize edilmiş DxAV1 - Roleplay Paketi sistemlerimizi tercih edebilir ya da mevcut sunucunuzun derinlemesine optimizasyonu için profesyonel Developerlik Hizmeti ekibimizden destek alabilirsiniz.

Sıkça Sorulan Sorular (SSS)

1. profiler record komutu sunucuyu dondurur mu?

Hayır. Profiler arka planda hafif bir bellek havuzu açarak çalışır. Ancak kayıt süresini (tick sayısını) 2000'den fazla vermemelisiniz; aksi halde oluşturulan .json dosyasının boyutu gigabaytları bulabilir ve tarayıcınızda açılmayabilir.

2. Chrome Tracing yerine speedscope.app kullanabilir miyim?

Evet! speedscope.app aracı FiveM JSON profillerini mükemmel şekilde destekler. Üstelik 'Left Heavy' modu sayesinde en çok CPU tüketen scriptleri doğrudan sıralı liste halinde görebilirsiniz.

3. Resmon düşükken oyun neden takılır?

Resmon, kaynakların saniye başına harcadığı CPU zamanını ortalama alır. 1 saniye boyunca 0.01ms çalışıp tam saniyenin sonunda 100ms kilitlenen bir döngü resmon'da neredeyse hiç fark edilmez ama oyuncu ekranında devasa bir 'freeze' (donma) olarak hissedilir."

"imagePrompt": "A highly detailed cinematic scene of a modern FiveM cybernetic operations room at night, dual ultra-wide curved monitors displaying colorful flame graph profiler charts, code editors, and high-performance Los Santos roleplay cityscape blurred in the background, neon cyan and deep purple ambient lighting, Unreal Engine 5 render style, 8k resolution.

Bu Rehber İşinize Yaradı mı?

Fikrinizi belirterek içeriklerimizi geliştirmemize yardımcı olun.

Topluluk
DX
Teknik İçerik Ekibi

Dexta Store Geliştirici Grubu

FiveM sunucuları için yüksek FPS optimizasyonlu hazır paketler, özel scriptler, MLO haritaları ve DXA koruma mimarisi geliştiren teknik ekibimiz tarafından hazırlanmıştır.

Premium FiveM Çözümleri

Sunucunuzu Bir Üst Seviyeye Taşımaya Hazır Mısınız?

Sıfırdan uğraşmak yerine; test edilmiş, yüksek FPS garantili ve 7/24 anında teslim edilen hazır roleplay paketlerimizi keşfedin.

Tüm Paket ve Scriptleri İncele

İlginizi Çekebilecek Diğer Rehberler