Linux sunucuda htop, top ve iotop ile kaynak izleme, Minecraft sunucunuzun neden yavaşladığını bulmanın ilk adımıdır. Üç araç üç farklı soruya cevap verir: htop işlemci ve bellek kimde, iotop diski kim meşgul ediyor, free -h bellek gerçekten doldu mu. Bu üçünü doğru okuyabilen bir yönetici, sorunun donanımda mı yazılımda mı olduğunu beş dakikada ayırır.
Ama bir uyarıyla başlayalım. En sık yapılan hata, htop’ta toplam CPU kullanımına bakıp “işlemci boş, sorun CPU’da değil” demektir. Minecraft’ın ana tick döngüsü tek bir iş parçacığında çalışır. 8 çekirdekli bir makinede o iş parçacığı bir çekirdeği tamamen doldurabilir ve toplam kullanım yine de %13 görünür. Sunucu darboğazdadır, ekran boş der. Bu tuzağa düşmeyin — aşağıda tek tek anlatacağız.
Bu rehber Ubuntu 24.04 LTS üzerinde, /opt/minecraft/server dizininde çalışan bir Paper 26.2 sunucusunu örnek alıyor. Debian 12, AlmaLinux ve Rocky Linux’ta paket kurulum komutu dışında her şey aynıdır. Sunucuya SSH ile bağlanıp komut çalıştırabiliyorsanız hazırsınız.
htop Kurulumu ve İlk Bakış#
htop çoğu dağıtımda varsayılan olarak gelmez ama depolarda hazır bulunur.
# Ubuntu / Debian
sudo apt update && sudo apt install -y htop iotop
# AlmaLinux / Rocky Linux
sudo dnf install -y htop iotop
# Calistir
htop
Ekranın üst kısmında iki blok var. Solda her CPU çekirdeği için ayrı bir renkli çubuk, sağda bellek ve swap çubukları ile görev sayısı, load average ve çalışma süresi. Altta ise süreç listesi.
sudo ile çalıştırmanıza gerek yok; tüm süreçleri görmek için yeterli izniniz zaten var. Ancak başka bir kullanıcının sürecini F9 ile sonlandırmak isterseniz root olmanız gerekir. Minecraft sürecini asla F9 → SIGKILL ile öldürmeyin; dünya kaydedilmeden kapanır.Renkli Çubukları Okumak#
htop’un renkleri rastgele değil; her renk farklı bir zaman kategorisini gösterir. Bunları bilmek darboğazın türünü anında daraltır.
| Renk | CPU çubuğunda | Bellek çubuğunda |
|---|---|---|
| Yeşil | Kullanıcı süreçleri (Java burada) | Fiilen kullanılan RAM |
| Kırmızı | Çekirdek / sistem zamanı | — |
| Sarı | nice ile önceliği düşürülmüş işler | Dosya önbelleği (cache) |
| Mavi | — | Buffer’lar |
| Turuncu | IRQ / soft IRQ (ağ kesmeleri) | Swap kullanımı |
| Camgöbeği | Sanallaştırma bekleme süresi (steal) | — |
Camgöbeği rengi VDS kullanıcıları için özellikle önemli. Yüksek “steal time”, ana makinenin işlemcisini başka müşterilere ayırdığı ve sizin sanal makinenizin sırada beklediği anlamına gelir. Paylaşımlı vCPU veren ucuz planlarda bu değer sık görülür ve Minecraft’ta doğrudan TPS düşüşü olarak yaşanır. Kendi çekirdeği ayrılmış bir yüksek frekanslı Ryzen VDS paketinde bu satır sıfıra yakın kalır.
Bellek çubuğundaki sarı bölge çoğu kişiyi telaşlandırır: “RAM dolmuş!”. Dolmamıştır. Sarı, çekirdeğin dosya önbelleğidir ve bir uygulama bellek isterse anında geri verilir. Minecraft sunucusunda bu önbellek chunk okumalarını hızlandırdığı için doluluk aslında iyi bir işarettir.
Load Average: Üç Sayının Anlamı#
Ekranın sağ üstündeki Load average: 2.14 1.87 1.42 satırı sırasıyla son 1, 5 ve 15 dakikanın ortalama çalıştırılabilir süreç sayısını verir. Yüzde değil, sayıdır — ve bu yüzden yorumlanması çekirdek sayınıza bağlıdır.
# Cekirdek sayisini ogren
nproc
# Load average'i dogrudan oku
uptime
cat /proc/loadavg
# Islemci modelini ve frekansini gor
lscpu | grep -E 'Model name|CPU\(s\)|MHz'
Kural basit: load average değerini çekirdek sayısına bölün.
| 8 çekirdekli makinede load | Anlamı | Ne yapmalı |
|---|---|---|
0.50 – 2.00 | Rahat, boşta kapasite var | Bir şey yapmayın |
4.00 civarı | Yarı yük, normal çalışma | İzlemeye devam |
8.00 civarı | Tam doluluk, sınırdasınız | Yük kaynağını bulun |
12.00 ve üzeri | Kuyrukta bekleyen süreçler var | Acil müdahale gerekir |
Üç sayıyı birlikte okumak eğilimi verir. Load average: 6.20 3.10 1.90 gibi bir satırda yük hızla artıyor demektir — az önce bir şey oldu. Tersine 1.10 3.40 5.80 ise kriz geçmiş, sistem toparlanıyor. Bu ayrımı yapabilmek, gece 03:00’te gelen “sunucu donuyor” mesajından sonra sabah baktığınızda çok işe yarar.
iotop ve vmstat çıktısındaki wa sütununa bakın.Tek Çekirdek Tuzağı: Minecraft Neden Böyle Görünür?#
Bu, Minecraft sunucusu izlemenin en kritik konusu ve en çok yanlış anlaşılan noktası. Sunucunun ana döngüsü — dünya tick’leri, mob yapay zekâsı, redstone, entity hareketi — tek bir iş parçacığında çalışır. Paper ve Purpur bazı işleri (chunk oluşturma, ağ, otomatik kayıt) ayrı iş parçacıklarına almıştır ama ana döngü hâlâ tektir.
Sonuç şu: 12 çekirdekli bir Ryzen 9 üzerinde Minecraft sunucunuz sadece bir çekirdeği doldurabilir. htop’ta 1 numaralı çubuk kıpkırmızı, geri kalan 11 çubuk neredeyse boş görünür. Toplam CPU kullanımı %9 yazar. Ve sunucu, TPS’i 12’ye düşmüş hâlde takılıyordur.
# Java surecinin cekirdek basina dagilimini gor
top -H -p $(pgrep -u minecraft -f 'paper.*jar')
# Ayni bilgi ps ile: en cok CPU harcayan is parcaciklari
ps -L -o pid,tid,pcpu,comm -p $(pgrep -u minecraft -f 'paper.*jar') | sort -k3 -nr | head -n 10
top -H çıktısında iş parçacıklarını ayrı ayrı görürsünüz. “Server thread” adlı olan ana tick döngüsüdür; onun CPU yüzdesi %90’ı geçiyorsa sunucunuz işlemci sınırındadır. Diğer iş parçacıkları (GC thread’leri, Netty IO, chunk worker’ları) düşük kalır ve bu normaldir.
Minecraft’ta 24 çekirdekli düşük frekanslı bir işlemci, 8 çekirdekli yüksek frekanslı bir işlemciden daha kötü sonuç verir.
Bu yüzden donanım seçiminde saat hızı belirleyicidir. AMD Ryzen 9 7900X veya 7950X sınıfı işlemciler bu iş için doğru tercihtir; alt sınır olarak Ryzen 9 3900X kabul edilebilir. Xeon E3/E5 ve düşük frekanslı çok çekirdekli sunucu işlemcileri aynı oyuncu sayısında belirgin şekilde daha düşük TPS verir. Konunun tamamı doğru donanım nasıl seçilir sayfasında.
top ile htop Arasındaki Fark#
htop kurulu değilse ve paket kuramayacağınız bir ortamdaysanız top her Linux makinesinde hazır bekler. İkisi de aynı veriyi /proc dizininden okur; fark sunumda ve kullanım kolaylığındadır.
| Özellik | top | htop |
|---|---|---|
| Kurulum | Hazır gelir | Ayrıca kurulur |
| Çekirdek başına çubuk | Yok (1 tuşuyla liste) | Renkli çubuk |
| Fare desteği | Yok | Var |
| Ağaç görünümü | Sınırlı | F5 ile tam ağaç |
| İş parçacığı görünümü | -H ile | F2 ayarlarından |
| Yatay kaydırma | Yok | Ok tuşlarıyla |
| Betikten kullanım | top -b -n1 ile toplu mod | Uygun değil |
# top'u tek seferlik calistir (betikte kullanmak icin)
top -b -n1 | head -n 15
# top acikken faydali tuslar:
# 1 -> cekirdekleri ayri ayri goster
# H -> is parcaciklarini goster
# M -> bellek kullanimina gore sirala
# P -> CPU kullanimina gore sirala
# c -> tam komut satirini goster
Minecraft Sürecini Bulma ve Heap Bayraklarını Görme#
Sunucunun hangi bayraklarla başladığını görmek, yanlış yapılandırmayı tespit etmenin en hızlı yoludur. Özellikle -Xms ile -Xmx değerlerinin eşit olup olmadığını ve gerçekten beklediğiniz miktarı verip vermediğinizi burada doğrularsınız.
# Java surecini ve tam baslatma satirini gor
ps aux | grep -i '[j]ava'
# Uzun satir kesiliyorsa
ps -ef -ww | grep '[p]aper'
# Sadece PID'i al
pgrep -u minecraft -f 'paper.*jar'
# Surecin bellek kullanimi (RSS = fiilen kullanilan fiziksel bellek)
ps -o pid,user,%cpu,%mem,rss,etime,args -p $(pgrep -u minecraft -f 'paper.*jar')
Çıktıda -Xms10G -Xmx10G gibi bir bölüm görmelisiniz. Xms ve Xmx eşit değilse JVM heap’i çalışma sırasında büyütüp küçültür ve bu her seferinde tick içinde duraklama üretir. Değerleri paketinize göre ayarlayın; ayrıntısı RAM ayarları ve JVM flag’leri sayfasında.
RSS sütunundaki değer -Xmx değerinden yüksek çıkar; bu normaldir. JVM heap dışında metaspace, iş parçacığı yığınları ve doğrudan bellek de kullanır. 10 GB heap veren bir sunucunun 12 GB civarı RSS göstermesi beklenir. RSS değeri -Xmx artı 3 GB’ı aşıyorsa bellek sızıntısı yapan bir eklenti arayın.
jcmd aracıyla çok daha ayrıntılı bilgi alabilirsiniz. jcmd <pid> GC.heap_info heap bölgelerinin doluluğunu, jcmd <pid> VM.flags ise JVM’in fiilen kullandığı tüm bayrakları listeler. İkincisi özellikle işe yarar: bayrağı yazdığınızı sandığınız hâlde yazım hatası yüzünden uygulanmamışsa burada görürsünüz.free -h ile Bellek Durumu#
Bellek konusunda htop’un çubuğu hızlı bir fikir verir ama sayısal doğrulama için free -h gerekir.
free -h
# total used free shared buff/cache available
# Mem: 15Gi 11Gi 1.1Gi 14Mi 3.2Gi 3.7Gi
# Swap: 8.0Gi 0B 8.0Gi
- available
- Asıl bakmanız gereken sütun. Uygulamaların swap’a gitmeden kullanabileceği tahmini bellek. Bu değer 1 GB’ın altına düştüyse sıkışıyorsunuz demektir.
- free
- Hiçbir amaçla kullanılmayan bellek. Sağlıklı bir Linux sunucusunda düşük olması normaldir; panik yapmayın.
- buff/cache
- Dosya önbelleği. Kayıp bellek değildir, ihtiyaç anında geri verilir.
- Swap / used
- Sıfırdan büyükse sistem bir noktada bellek baskısı yaşamıştır. Sürekli artıyorsa RAM yetmiyordur.
Swap kullanımı sıfırdan farklıysa ve büyüyorsa Java heap’i diske taşınıyor olabilir; bu durumda TPS çöker. Swap alanının doğru yapılandırılması ve swappiness ayarı için Linux sunucuda swap alanı oluşturma sayfasına bakın. Bellek tamamen tükeniyorsa Out of Memory hatası sayfası çözümleri sıralıyor.
iotop ile Disk I/O İzleme#
CPU boş, RAM bol, load average makul — ama sunucu yine takılıyorsa geriye tek suçlu kalır: disk. Minecraft bölge dosyalarına sürekli okuma ve yazma yapar, üstelik bunlar küçük ve dağınık erişimlerdir. Disk gecikmesi doğrudan tick süresine yansır.
# Sadece fiilen I/O yapan surecleri, birikimli toplamlarla goster
sudo iotop -oPa
# Toplu modda 5 ornek al (betikte kullanmak icin)
sudo iotop -boPqqq -n 5
# Genel I/O bekleme yuzdesi (wa sutunu)
vmstat 5 5
# Diskin doluluk ve gecikme durumu
df -h /opt
sudo apt install -y sysstat && iostat -x 5 3
vmstat çıktısındaki wa sütunu, CPU’nun disk beklerken geçirdiği zamanın yüzdesidir. Bu değer sürekli %10’un üzerindeyse diskiniz darboğazdır. iostat -x çıktısındaki %util ve await sütunları da aynı hikâyeyi anlatır: await milisaniye cinsinden ortalama istek bekleme süresidir ve NVMe SSD’de tek haneli olmalıdır.
iotop çalıştırırsanız tar sürecinin diski doldurduğunu görürsünüz — bu beklenen bir durumdur. Yedek betiğinizde nice -n 19 ionice -c3 öneki kullanarak bu etkiyi azaltabilirsiniz. Ayrıntısı cron ile otomatik yedekleme sayfasında.Disk tarafında NVMe SSD tercih değil zorunluluktur. SATA SSD’de chunk yükleme gecikmesi gözle görülür, HDD’de sunucu oyuncu yoğunluğunda resmen durur. Alan olarak dünyanın kendisine en az 50 GB, modlu veya büyük haritalı sunucularda 100 GB ve üzeri planlayın. Disk dolarsa sunucu chunk yazamaz ve dünya bozulur; disk doluysa ne yapmalı sayfası acil müdahaleyi anlatıyor.
htop Kısayolları ve Pratik Kullanım#
htop’un tuş kısayollarını bilmek, aynı bilgiye ulaşmak için harcadığınız süreyi yarıya indirir.
- F2
- Ayarlar. Buradan iş parçacığı görünümünü, ek sütunları ve renk temasını değiştirirsiniz.
- F3
- Arama. Süreç adında metin arar, imleci eşleşen satıra taşır.
- F4
- Filtre. Listeyi kalıcı olarak daraltır —
javayazarsanız yalnızca Java süreçleri kalır. - F5
- Ağaç görünümü. Hangi sürecin hangi süreci başlattığını gösterir.
- F6
- Sıralama sütunu seçimi. CPU, bellek veya süre bazlı sıralama.
- F9
- Sinyal gönderme. Minecraft sürecine yalnızca
SIGTERMgönderin, aslaSIGKILLdeğil. - u
- Kullanıcıya göre filtreleme.
minecraftseçerek yalnızca sunucu süreçlerini görürsünüz. - H
- Kullanıcı iş parçacıklarını gizler veya gösterir.
F9 ile Minecraft sürecine SIGKILL (9) göndermek, kayıt işlemini ortasından keser ve bölge dosyalarını bozabilir. Sunucuyu durdurmanın doğru yolu konsoldan stop, mcrcon ile stop komutu veya sudo systemctl stop minecraft komutudur.İzlemeden Teşhise: htop Nereye Kadar Yeter?#
htop size darboğazın yerini söyler, sebebini değil. “Server thread %98 CPU kullanıyor” bilgisi değerlidir ama hangi eklentinin, hangi mob’un veya hangi redstone devresinin buna yol açtığını söylemez. Oradan sonrası oyun içi profilleme aracının işidir.
| Belirti | htop’ta görünen | Sonraki adım |
|---|---|---|
| Tek çekirdek %100, TPS düşük | Server thread doygun | Spark profil raporu alın |
| Load yüksek, CPU boş | wa yüksek | iotop ile diski inceleyin |
| RAM dolu, swap artıyor | available < 1 GB | Heap düşürün veya RAM ekleyin |
| Steal time (camgöbeği) yüksek | Sanal makine sırada bekliyor | Ayrılmış çekirdekli pakete geçin |
| Java RSS sürekli büyüyor | -Xmx + 3 GB aşıldı | Eklenti bellek sızıntısı arayın |
| Her şey normal, oyuncular lag diyor | Kaynaklar rahat | Ağ tarafına bakın, ping ölçün |
Son satır önemli: kaynaklar rahatken oyuncuların lag bildirmesi genelde ağ kaynaklıdır ve sunucu tarafında TPS 20’dir. Bu ayrımı yapmak için tick, TPS ve MSPT ne anlama gelir sayfasını okumanızı öneririz. Gerçek TPS düşüklüğünde ise TPS düşüklüğü ve çözüm yolları sayfası sıralı bir teşhis listesi sunuyor.
Uzun vadede tek tek komut çalıştırmak yerine kalıcı bir izleme kurmak isterseniz Prometheus, Grafana veya Netdata gibi araçlar geçmişe dönük grafik tutar; genel yaklaşım sunucu izleme ve monitoring rehberinde anlatılıyor. Bir gece önce ne olduğunu anlamak istediğinizde canlı htop ekranı işe yaramaz, kayıtlı grafik yarar.
Özetle#
Linux sunucuda kaynak izlemenin özeti şu: sudo apt install -y htop iotop ile araçları kurun, htop’ta çekirdek çubuklarına ve load average’ın üç sayısına bakın, belleği free -h ile doğrulayın, disk şüphesinde sudo iotop -oPa çalıştırın ve Java bayraklarını ps aux | grep java ile kontrol edin.
Minecraft’a özgü tek kritik bilgi şudur: tek çekirdeğin %100’de olması normaldir ve toplam CPU yüzdesi yanıltıcıdır. Ana tick döngüsü tek iş parçacığında çalıştığı için 12 çekirdekli bir makinede toplam kullanım %9 görünürken sunucu tamamen darboğazda olabilir. Bakılacak yer top -H çıktısındaki “Server thread” satırıdır.
Donanım tarafında sonuç değişmiyor: yüksek saat hızlı AMD Ryzen 9 işlemci, en az 8 GB RAM ve NVMe SSD. Ölçüm size sınırı gösterir, sınırı aşmanın yolu ise doğru donanımdan geçer. Kaynak yükseltmesinin ne zaman gerektiğine VDS’de RAM, CPU ve disk yükseltme zamanı sayfasıyla karar verebilir, takıldığınız noktada destek talebi açabilirsiniz.