Ekran Kartlı Sunucu Satışları Başladı. İncele
Performans ve Optimizasyon

Spark ve Timings Raporu ile Minecraft Performans Analizi

Spark profiler kurulumu, /spark profiler komutları, rapor okuma ve sunucunuzu yavaşlatan eklentiyi tespit etme rehberi.

  • 6 dk okuma
  • Güncelleme:
  • Yayın:
  • Batihost Teknik Ekibi

Kısaca Özet

  • spark, Minecraft sunucusunun tick içinde hangi işe ne kadar zaman harcadığını gösteren örnekleme tabanlı profiler’dır; Paper, Purpur, Fabric, NeoForge, Forge ve Velocity için ayrı yapıları vardır.
  • Temel komut zinciri: /spark health ile genel durum, /spark profiler --timeout 300 ile beş dakikalık profil, /spark tickmonitor ile anlık ağır tick yakalama.
  • Paper’ın eski Timings sistemi güncel sürümlerde kaldırıldı; 26.x sunucularında analiz aracı spark’tır.
  • Rapor okumanın anahtarı yüzdelerdir: tick süresinin belirgin bir dilimini tek başına alan çağrı zincirini bulup kaynağa kadar takip edin.

Spark ile Minecraft performans analizi, sunucunun her tick’te hangi işe kaç milisaniye harcadığını ölçüp raporlayan örnekleme tabanlı bir profiler ile yapılır. Tahmine dayalı config değişikliği yerine gerçek darboğazı gösterdiği için, optimizasyon sürecinin ilk adımı daima bir spark raporudur.

Bu sayfada spark’ı kurmayı, doğru komutlarla profil almayı ve en önemlisi çıkan raporu yorumlamayı anlatıyoruz. Sonunda hangi eklentinin, hangi entity’nin veya hangi dünya işleminin sunucunuzu yavaşlattığını kendiniz tespit edebileceksiniz.

BilgiPaper, eski Timings sistemini güncel sürümlerde kaldırdı. 26.x sunucularında /timings komutu yoktur; analiz aracı spark’tır. Eski rehberlerde geçen timings raporu yorumları bu sürümlerde uygulanamaz.

Spark Kurulumu#

spark tek bir jar dosyasıdır ve platforma göre ayrı yapılar sunar. Sunucu türünüze uygun olanı indirin.

İndirmeniz gerekenler
  • spark profilerÖnerilen Bukkit/Paper, Fabric, NeoForge, Forge, Velocity, BungeeCord.jarÜcretsiz
    İndir
  • Paper 26.2 sunucu jar Her platform.jar
    İndir
  • LuckPerms (yetki yönetimi) Paper / Velocity / Fabric.jar
    İndir

Bağlantılar resmî kaynaklara gider. Üçüncü taraf sitelerden jar indirmeyin.

  1. Jar dosyasını doğru klasöre koyun#

    Paper, Purpur ve Spigot için plugins, Fabric ve NeoForge için mods klasörü. Velocity kullanıyorsanız proxy’nin plugins klasörüne ayrıca kurabilirsiniz.

  2. Sunucuyu yeniden başlatın#

    Konsolda spark’ın yüklendiğini doğrulayın. Yükleme sonrası ilk kontrol komutu:

    spark health
  3. Yetkileri verin#

    Oyun içinden kullanacaksanız spark iznini yönetici grubuna tanımlayın. LuckPerms ile:

    lp group admin permission set spark true

    Yetki sistemi kurulumu için LuckPerms rehberine bakabilirsiniz.

İpucuspark’ı yalnızca sorun çıktığında kurmayın; sürekli yüklü tutun. Ölçülebilir bir performans maliyeti yoktur ve sorun anında hemen profil alabilmek, sorunu tekrarlamayı beklemekten çok daha hızlıdır.

Temel Komutlar ve Ne Zaman Kullanılır#

KomutNe yaparNe zaman kullanılır
/spark healthTPS, MSPT, CPU, bellek, disk özetiİlk teşhis
/spark tpsTPS ve MSPT yüzdelik dağılımıDalgalanma kontrolü
/spark profilerCPU örnekleme profili başlatırDarboğaz arama
/spark tickmonitorEşiği aşan tick’leri raporlarAni donmalar
/spark heapsummaryHeap içindeki nesne dağılımıBellek şişmesi
/spark gcÇöp toplayıcı istatistikleriDüzenli TPS düşüşleri
/spark activitySon etkinlik günlüğüGeçmişe bakma
Sık kullanılan spark komutları

Doğru profil nasıl alınır#

Profilin işe yaraması için üç şart vardır: sunucu yükte olmalı, süre yeterli olmalı ve doğru iş parçacığı hedeflenmelidir.

spark profiler --timeout 300 --thread server
spark profiler --timeout 300 --thread * --only-ticks-over 50
spark profiler --info
spark profiler --stop

--thread server yalnızca ana tick iş parçacığını profiller; TPS sorunlarında istediğiniz budur. --thread * tüm iş parçacıklarını kapsar ve chunk üretimi, ağ, disk I/O gibi yan iş parçacıklarını da gösterir. --only-ticks-over 50 ise yalnızca 50 ms’i aşan tick’lerde örnek toplar; ortalamada kaybolan tepe yükleri bulmak için çok işe yarar.

DikkatBoş sunucuda alınan profil işe yaramaz. Ölçümü, oyuncu sayısının en yüksek olduğu ve şikâyetlerin geldiği saatte yapın. Farklı yük seviyelerinde alınan iki profili karşılaştırmak yanıltıcı sonuç üretir.

Raporu Okumak: Çağrı Ağacı Mantığı#

Profil bittiğinde konsola bir bağlantı düşer. Bu bağlantıyı açtığınızda karşınıza ağaç yapısında bir çağrı listesi çıkar. Her satırda bir metod adı, o metodun toplam sürenin yüzde kaçını aldığı ve altındaki alt çağrılar bulunur.

Okuma yöntemi basittir: en yüksek yüzdeli daldan başlayıp aşağı inersiniz. Yüzde bir alt dala tamamen aktarılıyorsa devam edersiniz; birden fazla dala bölünüyorsa dallanmanın olduğu yer önemlidir.

Karşılaşacağınız tipik dallar#

ServerLevel.tick
Dünyanın ana tick’i. Altında entity, blok ve chunk işleri toplanır.
tickNonPassenger / entity tick
Entity yapay zekâsı. Yüksekse mob ve item yığılması vardır.
tickBlockEntities
Hopper, sandık, fırın gibi blok entity’leri. Yüksekse hopper zinciri arayın.
chunk generate / ChunkStatus
Yeni chunk üretimi. Yüksekse dünya ön üretimi yapılmamış demektir.
Plugin paket adları
Örneğin com.example.plugin ile başlayan zincirler. Doğrudan eklenti maliyetidir.
redstone / signal
Redstone hesaplaması. Alternatif redstone motoru kazanç sağlar.
SqlConnection / JDBC
Ana iş parçacığında veritabanı sorgusu. Kritik bir hatadır, düzeltilmeli.

Yorumlama örnekleri#

Raporda gördüğünüzAnlamıYapılacak
Entity tick %40Mob ve item yığılmasıactivation range ve merge radius ayarı
tickBlockEntities %25Hopper zincirihopper-transfer ve hopper-check değerini artırın
Chunk generate %30Canlı chunk üretimiChunky ile ön üretim, world border
Tek eklenti %20Pahalı eklentiAyar hafifletme veya alternatif
GC dalları yüksekBellek baskısıHeap ve GC bayraklarını gözden geçirin
Yük vanilla mantıkta dağınıkDonanım sınırıDaha yüksek saat hızlı işlemci
spark raporu yorumlama tablosu

Tespit ettiğiniz sorunun çözümü için ilgili sayfalara geçin: entity ve hopper yükü paper.yml ve spigot.yml rehberinde, chunk üretimi view distance sayfasında, genel yaklaşım optimizasyon ana rehberinde anlatılıyor.

Tick Monitor: Ani Donmaları Yakalamak#

Bazı sunucularda ortalama MSPT gayet iyidir ama dakikada bir kez 400 ms süren bir tick oluşur ve oyuncular bunu belirgin donma olarak hisseder. Ortalamalara bakan bir profil bu tepeyi kaçırabilir.

spark tickmonitor --threshold 100
spark tickmonitor --threshold-tick 150
spark tickmonitor --without-gc

Eşiği aşan her tick için konsola bir özet basılır. Bu özette tick’in ne kadar sürdüğü ve GC kaynaklı olup olmadığı görünür. GC kaynaklıysa bellek tarafına, değilse oyun mantığına yönelirsiniz.

İpucuTick monitörünü açık bırakıp yarım saat gözlemleyin. Donmaların düzenli aralıklarla mı yoksa belirli bir olayla mı (patlama, oyuncu girişi, otomatik kaydetme) tetiklendiğini görürsünüz. Bu bilgi teşhisi tek başına tamamlayabilir.

Bellek Analizi: heapsummary ve GC#

Sunucunuz zamanla yavaşlıyor ve yeniden başlatınca düzeliyorsa bellek tarafına bakmalısınız. İki komut yeterli bilgi verir.

spark gc
spark heapsummary

spark gc, hangi çöp toplayıcının çalıştığını, toplama sıklığını ve ortalama duraklama süresini gösterir. Duraklama süreleri 200 ms’i aşıyorsa TPS grafiklerindeki düzenli düşüşlerin sebebi budur.

spark heapsummary, heap içinde hangi sınıftan kaç örnek olduğunu listeler. Beklenmedik şekilde şişmiş bir sınıf görürseniz (örneğin milyonlarca item entity’si veya bir eklentinin önbellek nesnesi) kaynağı yakalamışsınız demektir.

Bellek sonuçlarını nasıl yorumlarsınız#

GözlemMuhtemel sebepÇözüm
GC sıklığı yüksek, duraklama kısaHeap küçük ama yetiyorHeap’i bir kademe artırın
Duraklamalar 300 ms üzeriHeap büyük, GC seçimi yanlış16 GB+ heapte ZGC değerlendirin
Heap sürekli doluyorBellek sızıntısı olabilirheapsummary ile şişen sınıfı bulun
Xms ile Xmx farklıJVM heap boyutunu sürekli değiştiriyorİkisini eşitleyin
Bellek analizinin yorumlanması
DikkatJava 25’te G1 hâlâ JVM’in varsayılan çöp toplayıcısıdır. Bayraksız başlatılan bir 26.2 sunucusu G1GC kullanır. Aikar’s Flags 26.x sunucularında geçerliliğini korur. -XX:+ZGenerational bayrağı ise Java 25’te obsolete’tir ve konsola uyarı basar; kullanmayın. Ayrıntı için RAM ve JVM flag rehberine bakın.

Ölç, Değiştir, Yeniden Ölç#

Profiler’ın en büyük değeri, yaptığınız değişikliğin işe yarayıp yaramadığını kanıtlamasıdır. Disiplinli bir döngü kurun.

  1. Referans profili alın#

    Yoğun saatte beş dakikalık profil alın ve bağlantıyı bir yere kaydedin. Bu sizin başlangıç noktanız.

  2. Tek bir değişiklik yapın#

    Aynı anda beş ayar değiştirirseniz hangisinin işe yaradığını asla bilemezsiniz. Değişikliği tek tek uygulayın.

  3. Benzer yükte tekrar ölçün#

    Oyuncu sayısı ve saat mümkün olduğunca benzer olmalı. 10 oyunculu profille 40 oyunculu profili karşılaştırmayın.

  4. Kazanç yoksa geri alın#

    İşe yaramayan ayarı config’de bırakmayın. Anlamsız ayar birikintisi ileride teşhisi zorlaştırır.

  5. Sonucu not edin#

    Hangi ayarın kaç milisaniye kazandırdığını kaydedin. Sunucu büyüdükçe bu notlar çok değerli hâle gelir.

SonuçBu döngüyü uygulayan bir yönetici, üç profil sonunda sunucusunun gerçek darboğazını bilir. Forumdan kopyalanan config dosyaları ise çoğu zaman bir yıl sonra bile hangi ayarın neden orada olduğu bilinmeyen bir yığına dönüşür.

Raporu Paylaşırken Dikkat Edilecekler#

spark raporları spark.lucko.me üzerinde barındırılır ve bağlantıya sahip herkes görüntüleyebilir. Rapor içinde sunucu sürümü, eklenti listesi, mod listesi ve bazı dosya yolları görünür.

  • Bağlantıyı herkese açık forumlarda paylaşmadan önce içeriğini kontrol edin.
  • Rapor, oyuncu şifresi veya veritabanı bilgisi içermez ama eklenti envanterinizi açığa çıkarır. Bu bilgi, saldırgan için hedef seçmeyi kolaylaştırabilir; güvenlik rehberimizde bu konuya değiniyoruz.
  • Destek ekibimizden yardım alacaksanız rapor bağlantısını destek talebi üzerinden iletmeniz en pratik yoldur.

Sunucu Çöküyorsa: Profil Değil Crash Report#

spark performans sorunları içindir. Sunucu tamamen kapanıyorsa okumanız gereken dosya profil raporu değil, crash-reports klasöründeki dosya ve logs/latest.log içeriğidir.

crash-reports/crash-2026-08-11_03.41.22-server.txt
logs/latest.log

Bu dosyaları okumayı ve stack trace’ten sorumlu eklentiyi bulmayı crash report okuma rehberinde anlatıyoruz. Bellek yetersizliğinden kaynaklanan çökmeler için OutOfMemoryError sayfası daha uygundur.

Özetle#

spark, Minecraft sunucu yönetiminde tahmini ölçümle değiştiren araçtır. Kurulumu tek jar, kullanımı üç komut, faydası ise saatlerce süren deneme yanılmadan kurtulmaktır.

Pratik rutin şudur: sorunu duyduğunuzda /spark health ile genel duruma bakın, yükteyken /spark profiler --timeout 300 ile beş dakikalık profil alın, çağrı ağacında yüzdesi en yüksek dalı kaynağına kadar takip edin, tek bir değişiklik yapıp aynı koşullarda yeniden ölçün. Ani donmalar için tick monitörünü, zamanla yavaşlama için heapsummary ve gc komutlarını kullanın. Ölçmediğiniz hiçbir ayarı değiştirmeyin.

Sıkça Sorulan Sorular#

spark nedir ve neden gerekli?

spark, sunucunun iş parçacıklarını düzenli aralıklarla örnekleyerek hangi metodun ne kadar CPU zamanı harcadığını çıkaran bir profiler’dır. Tahminle config değiştirmek yerine gerçek darboğazı gösterir. Kurulumu tek jar dosyasıdır ve sürekli açık kalsa bile ölçülebilir bir performans maliyeti getirmez.

Timings hâlâ kullanılıyor mu?

Hayır. Paper, Timings sistemini güncel sürümlerde kaldırdı ve kullanıcıları spark’a yönlendiriyor. 26.x sunucularında /timings komutunu ararsanız bulamazsınız. Eski rehberlerdeki timings.aikar.co çıktılarına göre yapılan yorumlar da artık geçerli değildir; ölçüm için spark kullanın.

Profil ne kadar sürmeli?

Beş dakika (--timeout 300) çoğu durum için doğru süredir. Daha kısa profiller yeterli örnek toplamaz, çok uzun profiller ise raporu okunmaz hâle getirir. Sunucunun en yoğun olduğu saatte profil alın; boş sunucudan alınan rapor gerçek yükü göstermez.

spark raporunda hangi bölüme bakmalıyım?

Önce "Server thread" iş parçacığını açın; tick döngüsü buradadır. Ağacı yüzdesi en yüksek daldan aşağı doğru takip edin. Vanilla oyun mantığında yoğunlaşma donanım sınırına, eklenti paket adlarında yoğunlaşma ise ilgili eklentinin maliyetine işaret eder.

spark bellek sızıntısını gösterir mi?

Evet, kısmen. /spark heapsummary komutu heap içindeki nesne türlerini sayı ve boyuta göre listeler. Beklenmedik şekilde milyonlarca örneği olan bir sınıf görürseniz kaynağı bellek sızıntısı olabilir. Daha derin analiz için /spark heapdump ile dökümü alıp harici bir araçla inceleyebilirsiniz.

Rapor bağlantısı herkese açık mı?

spark raporları spark.lucko.me üzerinde tahmin edilmesi zor bir kimlikle yayımlanır ve bağlantıyı bilen herkes görüntüleyebilir. Rapor içinde eklenti listesi, sürüm bilgileri ve dosya yolları görünür. Bağlantıyı yalnızca yardım aldığınız kişilerle paylaşın, herkese açık forumlarda dikkatli olun.

Ağır tick’leri anlık nasıl yakalarım?

/spark tickmonitor --threshold 100 komutunu kullanın. Süresi 100 milisaniyeyi aşan her tick için konsola özet basılır. Böylece TNT patlaması, mob spawn dalgası ya da zamanlanmış eklenti görevi gibi düzensiz aralıklarla oluşan yükleri, ortalamaların içinde kaybolmadan yakalarsınız.

Performans ve Optimizasyon — Tüm Rehberler#

  1. Minecraft Sunucu Optimizasyonu: TPS’i 20’de Tutma Rehberi
  2. Minecraft TPS Düşüklüğü ve Çözüm Yolları
  3. Minecraft Sunucu Lag Sorunu Nasıl Çözülür?
  4. Spark ve Timings Raporu ile Minecraft Performans Analizi
  5. Minecraft Sunucusu Kaç GB RAM İster? (Oyuncu Sayısına Göre Tablo)
  6. Minecraft Sunucusu İçin Doğru Donanım Nasıl Seçilir?
  7. Minecraft View Distance ve Simulation Distance Ayarları
  8. paper.yml, spigot.yml ve bukkit.yml Optimizasyon Rehberi

Bu rehber Batihost teknik ekibi tarafından hazırlanmış ve tarihinde güncellenmiştir. Eksik veya hatalı bulduğunuz bir bilgi varsa bize bildirin.

Başa dön