Windows Server’da Minecraft sunucu optimizasyonu, üç ayarla başlar: güç planını Yüksek performans’a almak, Windows Defender’a sunucu klasörü ile java.exe istisnası tanımlamak ve JVM heap’ini işletim sistemine yaklaşık 2 GB pay bırakacak biçimde sabitlemek. Bu üçü, aynı donanımda ortalama tick süresini gözle görülür biçimde düşürür; geri kalan ayarlar ise ani TPS düşüşlerini (spike) engellemeye yarar.
Bu sayfa tamamen Windows tarafına odaklanır: güç planı, sayfa dosyası, işlem önceliği, NTFS davranışları, ağ kartı ayarları ve gereksiz roller. Oyun içi tarafın ayarları — view distance, yaratık limitleri, paper.yml — ayrı sayfalarda anlatılıyor. Henüz sunucuyu kurmadıysanız önce Windows’ta Minecraft sunucu kurulumu rehberini tamamlayın, sonra buraya dönün.
Windows Server’da TPS’i Belirleyen Beş Katman#
Bir Minecraft sunucusunun 20 TPS’te kalması için tick döngüsünün 50 milisaniyeden kısa sürmesi gerekir. Bu 50 milisaniyeyi tüketen şeyler beş katmana ayrılır ve optimizasyonu bu sırayla yapmak gerekir:
- Donanım
- İşlemcinin tek çekirdek saat hızı, RAM miktarı, diskin gecikmesi. En alttaki katman; buradaki eksik yukarıdaki hiçbir ayarla kapanmaz.
- İşletim sistemi
- Güç planı, antivirüs, sayfa dosyası, arka plan servisleri, NTFS davranışları. Bu sayfanın konusu.
- JVM
- Java sürümü, heap boyutu, çöp toplayıcı seçimi ve bayraklar.
- Sunucu yazılımı
- Paper/Purpur yapılandırması, view-distance, yaratık limitleri, chunk yükleme davranışı.
- İçerik
- Eklentiler, redstone makineleri, oyuncu davranışı, dünya boyutu.
Deneyimimize göre kötü yapılandırılmış bir Windows kurulumunda ilk iki katman tek başına tick süresinin önemli bir bölümünü yiyebilir. Buna karşılık donanımı doğru seçilmiş, Defender istisnaları tanımlanmış bir makinede darboğaz neredeyse her zaman beşinci katmandadır.
Donanım Tabanı: Ryzen, RAM ve NVMe#
Minecraft’ın ana tick döngüsü tek bir çekirdekte çalışır. Chunk üretimi, ağ ve I/O işleri ayrı iş parçacıklarına dağılsa da dünyanın simülasyonu tek çekirdeğe bağlıdır. Bu yüzden 32 çekirdekli düşük frekanslı bir sunucu işlemcisi, 8 çekirdekli yüksek frekanslı bir Ryzen’in yanında geri kalır.
| Oyuncu / sunucu tipi | RAM | Java heap | İşlemci | Disk |
|---|---|---|---|---|
| 2-10 oyuncu, vanilla veya hafif eklentili | 8 GB | -Xms6G -Xmx6G | Ryzen 9 3900X ve üzeri | 50 GB NVMe |
| 10-30 oyuncu, eklentili Paper | 10-12 GB | -Xms10G -Xmx10G | Ryzen 9 7900X | 50-100 GB NVMe |
| 30-60 oyuncu, minigame / çok dünyalı | 16 GB | -Xms14G -Xmx14G | Ryzen 9 7900X / 7950X | 100 GB NVMe |
| Forge veya Fabric modpack | 16 GB (büyük modpackte 24-32 GB) | -Xms14G -Xmx14G | Ryzen 9 7950X | 100 GB+ NVMe |
| 60+ oyuncu veya proxy’li sunucu ağı | 32 GB ve üzeri | -Xms28G -Xmx28G | Ryzen 9 7950X | 200 GB+ NVMe |
Disk konusunda kısa kesiyoruz: NVMe SSD dışında bir seçenek düşünmeyin. Chunk okuma/yazma işlemleri küçük ve rastgele erişimlidir; SATA SSD’de bile fark edilir gecikme yaratır, HDD’de sunucu otomatik kaydetme sırasında düzenli olarak takılır. Donanım seçimini derinlemesine karşılaştırmak isterseniz doğru donanım seçimi rehberi her bileşeni tek tek ele alıyor. Hazır bir Windows makinesi kiralayacaksanız yüksek frekanslı Ryzen VDS paketleri bu profile göre yapılandırılmıştır.
Güç Planı ve İşlemci Park Ayarları#
Windows Server varsayılan olarak "Dengeli" güç planıyla gelir. Bu plan, boştaki çekirdekleri park eder ve saat hızını yük gelene kadar düşük tutar. Minecraft’ın tick döngüsü kısa ve ani yük dalgaları üretir; işlemci frekansı yükselene kadar geçen milisaniyeler doğrudan tick süresine yazılır. Bu, Windows’ta en sık gözden kaçan performans kaybıdır.
Yönetici PowerShell’de mevcut planı görün ve yüksek performansa geçin:
powercfg /list
powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
powercfg /getactivescheme
Ardından çekirdek park etmeyi tamamen kapatın ve minimum işlemci durumunu %100’e sabitleyin:
powercfg /setacvalueindex SCHEME_CURRENT SUB_PROCESSOR CPMINCORES 100
powercfg /setacvalueindex SCHEME_CURRENT SUB_PROCESSOR PROCTHROTTLEMIN 100
powercfg /setacvalueindex SCHEME_CURRENT SUB_PROCESSOR IDLEDISABLE 0
powercfg /setactive SCHEME_CURRENT
Değişikliği doğrulamak için Görev Yöneticisi’ni açın, Performans > CPU sekmesinde sunucu boştayken bile frekansın taban değere yakın kalmadığını görmelisiniz. Sanallaştırılmış bir VDS kullanıyorsanız güç planı yine de etkilidir; konuk işletim sistemi kendi C-state taleplerini ana makineye iletir.
Java 25 ve Doğru JVM Bayrakları#
Minecraft 26.1 ve sonrası Java 25 ister. Güncel kararlı sürüm 26.2 "Chaos Cubed" (16 Haziran 2026, protokol 776) de Java 25 ile çalışır. Eski bir Java 17 veya Java 21 kurulumuyla 26.x sunucusu açılmaz; hangi sürümün hangi Java’yı istediğini Java sürüm eşleşme tablosunda bulabilirsiniz.
Bağlantılar resmî kaynaklara gider. Üçüncü taraf sitelerden jar veya Java yükleyici indirmeyin.
Java 25 kurulumunun MSI ile yapılması ve JAVA_HOME ortam değişkeninin ayarlanması gerekir; adımların ekran görüntülü hali Windows’a Java 25 kurulumu sayfasında anlatılıyor. Kurulumdan sonra Komut İstemi’nde doğrulayın:
java -version
echo %JAVA_HOME%
Çöp toplayıcı tarafında sık yapılan bir hataya dikkat edin: 26.1 ile gelen "G1GC yerine ZGC" ve "varsayılan RAM 4 GB" değişiklikleri istemci tarafındadır, Minecraft Launcher’ın JVM varsayılanlarıdır. Sunucu jar’ının launcher’ı yoktur; sunucunun çöp toplayıcısını tamamen sizin verdiğiniz bayraklar belirler. Java 25’te G1 hâlâ JVM’in genel varsayılanıdır, yani bayraksız çalıştırdığınız bir 26.2 sunucusu G1GC kullanır.
-XX:+UseZGC yazın — -XX:+ZGenerational bayrağı Java 25’te obsolete’tir ve konsola uyarı basar.12 GB RAM’li bir Windows Server için hazır start.bat içeriği:
@echo off
title Minecraft Sunucusu - Paper 26.2
cd /d C:\minecraft\server
:start
java -Xms10G -Xmx10G ^
--add-modules=jdk.incubator.vector ^
-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 ^
-XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch ^
-XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M ^
-XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 ^
-XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 ^
-XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 ^
-XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 ^
-jar paper.jar --nogui
echo Sunucu kapandi. 5 saniye icinde yeniden baslatiliyor...
timeout /t 5 /nobreak
goto start
Heap 12 GB’ın üzerine çıkarsa Aikar’s Flags’in büyük heap varyantını kullanın: G1NewSizePercent=40, G1MaxNewSizePercent=50, G1HeapRegionSize=16M, G1ReservePercent=15, InitiatingHeapOccupancyPercent=20. Batch dosyasının satır satır açıklaması ve RAM hesabı için start.bat oluşturma rehberine bakabilirsiniz.
Windows Defender ve Antivirüs İstisnaları#
Tek bir ayarla en çok kazanç sağlayan adım budur. Minecraft, dünya klasöründeki region dosyalarına sürekli küçük yazma işlemleri yapar. Gerçek zamanlı koruma her dosya açılışını yakalar ve tarar; sonuç, otomatik kaydetme anlarında düzenli TPS düşüşüdür. Yönetici PowerShell’de:
Add-MpPreference -ExclusionPath "C:\minecraft"
Add-MpPreference -ExclusionPath "C:\Program Files\Eclipse Adoptium"
Add-MpPreference -ExclusionProcess "java.exe"
Get-MpPreference | Select-Object -ExpandProperty ExclusionPath
Get-MpPreference | Select-Object -ExpandProperty ExclusionProcess
Üçüncü taraf bir antivirüs (ESET, Kaspersky, Bitdefender) kuruluysa aynı istisnaları o programın arayüzünden de tanımlamanız gerekir; Defender istisnası onları kapsamaz.
Sayfa Dosyası ve Bellek Yönetimi#
Windows’un otomatik yönettiği sayfa dosyası, disk üzerinde büyüyüp küçülürken parçalanır ve tam da bellek baskısının arttığı anda I/O üretir. Doğru yaklaşım sayfa dosyasını kapatmak değil, sabitlemektir.
-
Sistem özelliklerini açın#
Başlat’a
sysdm.cplyazıp Enter’a basın. Gelişmiş sekmesinde Performans bölümündeki Ayarlar düğmesine tıklayın. -
Sanal belleği düzenleyin#
Açılan pencerede Gelişmiş > Sanal bellek > Değiştir yolunu izleyin. "Tüm sürücüler için disk belleği dosyası boyutunu otomatik olarak yönet" kutusunun işaretini kaldırın.
-
Sabit boyut verin#
Sistem diskini seçin, Özel boyut seçeneğini işaretleyin ve başlangıç ile maksimum değeri eşit girin. 16 GB RAM’li bir sunucuda 8192 MB / 8192 MB makul bir değerdir. Tamam deyip sunucuyu yeniden başlatın.
-
Görsel efektleri kapatın#
Aynı Performans Seçenekleri penceresinin Görsel Efektler sekmesinde "En iyi performansı ayarla" seçeneğini işaretleyin. RDP oturumunda çizilen gölge ve animasyonlar için harcanan CPU zamanını geri kazanırsınız.
Aynı pencerenin Gelişmiş sekmesindeki "İşlemci zamanlaması" ayarına dokunmanıza gerek yok. Windows Server’da varsayılan değer zaten Arka plan hizmetleri’dir ve sunucuyu Windows servisi olarak çalıştırıyorsanız doğru olan da budur.
İşlem Önceliği ve Çekirdek Yakınlığı#
Java sürecine "Yüksek" öncelik vermek, arka plan görevlerinin (güncelleme taraması, yedekleme ajanı, izleme yazılımı) tick döngüsünü kesmesini engeller. Bunu batch dosyasının içinde kalıcı hale getirebilirsiniz:
start "Minecraft" /high /wait /b java -Xms10G -Xmx10G -jar paper.jar --nogui
Zaten çalışan bir sürecin önceliğini PowerShell ile değiştirmek de mümkündür:
Get-Process java | ForEach-Object { $_.PriorityClass = 'High' }
Get-Process java | Select-Object Id, ProcessName, PriorityClass, WorkingSet
Çekirdek yakınlığı (affinity) ayarını ise yalnızca aynı makinede birden fazla sunucu barındırıyorsanız kullanın. Tek sunucu çalıştıran bir makinede affinity kısıtlaması genellikle zarar verir, çünkü Windows zamanlayıcısının sıcak çekirdeği seçme kabiliyetini elinden alır. İki ayrı Minecraft örneğini farklı çekirdek gruplarına bağlamak isterseniz Görev Yöneticisi’nde Ayrıntılar sekmesinde java.exe’ye sağ tıklayıp Benzeşimi ayarla seçeneğini kullanabilirsiniz.
NTFS ve Disk Davranışları#
Minecraft’ın dünya klasörü, NTFS’in varsayılan davranışlarıyla kötü anlaşır. İki ayar belirgin fark yaratır: son erişim zamanı damgası ve 8.3 kısa ad üretimi. İkisi de her dosya işleminde ek meta veri yazması demektir.
fsutil behavior query disablelastaccess
fsutil behavior set disablelastaccess 1
fsutil behavior set disable8dot3 1
Ayrıca Windows Search’ün sunucu klasörünü dizinlemesini engelleyin. Sunucu makinesinde masaüstü araması zaten gereksizdir; hizmeti tamamen durdurabilirsiniz:
Stop-Service -Name WSearch -Force
Set-Service -Name WSearch -StartupType Disabled
Disk birleştirme (defrag) görevine gelince: NVMe SSD’de zamanlanmış birleştirme çalışmaz, Windows bunun yerine TRIM gönderir. Bu görevi kapatmayın, olduğu gibi bırakın. Buna karşılık yedekleme yazılımlarının tam disk taramasını Minecraft’ın yoğun saatleri dışına alın. Yedekleme planı kurmadıysanız Minecraft yedekleme rehberi zamanlama örnekleri içeriyor.
Ağ Kartı ve Güvenlik Duvarı#
Java Edition 25565/TCP portunu kullanır. Portun Windows Defender Güvenlik Duvarı’nda açık olması gerekir; kural oluşturmanın adımları 25565 portunu açma sayfasında ayrıntılı olarak anlatılıyor. Hızlı yol:
New-NetFirewallRule -DisplayName "Minecraft Java 25565" -Direction Inbound `
-Protocol TCP -LocalPort 25565 -Action Allow -Profile Any
Get-NetFirewallRule -DisplayName "Minecraft*" | Format-Table DisplayName, Enabled, Direction
Ağ kartı tarafında iki ayar önemlidir. Birincisi, ağ bağdaştırıcısının güç yönetimi: Aygıt Yöneticisi > Ağ bağdaştırıcıları altında kartın özelliklerini açın, Güç Yönetimi sekmesinde "Bilgisayarın gücü korumak için bu aygıtı kapatmasına izin ver" kutusunun işaretini kaldırın. İkincisi, alıcı tarafı ölçekleme (RSS): sanal makinelerde bazen kapalı gelir, açık olması ağ kesintilerinin tek çekirdeğe yığılmasını önler.
Get-NetAdapterRss | Format-Table Name, Enabled, NumberOfReceiveQueues
Get-NetAdapterAdvancedProperty -DisplayName "*Energy*","*Green*" | Format-Table Name, DisplayName, DisplayValue
Gereksiz Roller, Özellikler ve Servisler#
Windows Server kurulumu, Minecraft için gereksiz birçok bileşenle gelir. Aşağıdakileri kapatmak hem RAM hem de arka plan CPU zamanı kazandırır:
- Sunucu Yöneticisi’nin oturum açışta başlaması — Sunucu Yöneticisi > Yönet > Sunucu Yöneticisi Özellikleri altından kapatılır.
- Yazdırma Biriktiricisi (Spooler) — Oyun sunucusunda yazıcı yoktur.
- Windows Search (WSearch) — Yukarıda kapattık.
- Xbox ile ilgili hizmetler — Windows 10/11 üzerinde barındırıyorsanız gereksizdir.
- IIS / Web Sunucusu rolü — Kurulu ve kullanılmıyorsa Rolleri ve Özellikleri Kaldır sihirbazıyla sökün.
Stop-Service -Name Spooler -Force
Set-Service -Name Spooler -StartupType Disabled
Get-Service | Where-Object { $_.Status -eq 'Running' } | Sort-Object DisplayName |
Format-Table Name, DisplayName -AutoSize
Otomatik güncellemeleri tamamen kapatmayın; bunun yerine yeniden başlatma penceresini oyuncu yoğunluğunun düşük olduğu saatlere alın. Aksi halde Windows, akşam prime-time saatinde sunucuyu yeniden başlatabilir. Yeniden başlatma penceresini Grup İlkesi’nden ya da Ayarlar > Windows Update > Etkin saatler bölümünden sabitleyin.
Ölçme: Görev Yöneticisi, Performans İzleyici ve spark#
Yaptığınız her değişikliği ölçün. Windows tarafında iki araç yeterlidir. Görev Yöneticisi’nin Ayrıntılar sekmesine Sütun seç ile "Temel öncelik", "İş kümesi (bellek)" ve "İşlem Kimliği" sütunlarını ekleyin; java.exe’nin gerçekten yüksek öncelikte çalıştığını ve heap’in beklediğiniz boyutta olduğunu buradan doğrulayın.
Daha ayrıntılı ölçüm için Performans İzleyici’yi (perfmon) kullanın. İzlenmesi anlamlı üç sayaç:
| Sayaç | Ne gösterir | Alarm eşiği |
|---|---|---|
| Processor Information \ % Processor Performance | Çekirdeğin taban frekansa göre gerçek hızı | Sürekli %100 altındaysa güç planı sorunlu |
| LogicalDisk \ Avg. Disk sec/Write | Yazma gecikmesi | 5 ms üzeri NVMe için yüksektir |
| Memory \ Pages/sec | Sayfa dosyası trafiği | Sürekli sıfırdan büyükse heap fazla verilmiş |
Oyun tarafındaki ölçümü ise spark ile yapın. Eklentiyi plugins klasörüne atıp sunucuyu yeniden başlattıktan sonra konsolda /spark profiler start --timeout 300 komutunu çalıştırın; süre dolduğunda size bir rapor bağlantısı verir. Raporu okumayı bilmiyorsanız spark ve Timings analiz rehberi hangi satırın ne anlama geldiğini açıklıyor.
Windows Optimizasyon Kontrol Listesi#
| Ayar | Nerede | Hedef değer |
|---|---|---|
| Güç planı | powercfg | Yüksek performans, çekirdek park kapalı |
| Defender istisnası | Add-MpPreference | Sunucu klasörü + java.exe |
| Java sürümü | java -version | 26.x için Java 25 LTS |
| Heap | start.bat | Xms = Xmx, OS’a 2 GB pay |
| Sayfa dosyası | sysdm.cpl | Sabit boyut, otomatik yönetim kapalı |
| İşlem önceliği | start /high | High (RealTime değil) |
| NTFS son erişim | fsutil | disablelastaccess 1 |
| Windows Search | services.msc | Devre dışı |
| NIC güç yönetimi | Aygıt Yöneticisi | Kapatma izni kaldırılmış |
| Güvenlik duvarı | New-NetFirewallRule | 25565/TCP gelen izinli |
Özetle#
Windows Server’da Minecraft optimizasyonu, sihirli tek bir ayar değil, birbirini tamamlayan küçük düzeltmeler zinciridir. Güç planını yüksek performansa alın, Defender’a istisna tanımlayın, Java 25 üzerinde Xms ile Xmx’i eşitleyin, sayfa dosyasını sabitleyin ve gereksiz servisleri kapatın. Bu beş adım, aynı donanımda hissedilir bir kararlılık farkı yaratır.
Windows tarafını bitirdiyseniz sıradaki durak oyun içi yapılandırmadır: TPS’i 20’de tutma rehberi sunucu yazılımı ve içerik katmanlarını, Windows VDS kurulum sayfası ise uzak makinede sıfırdan kurulum akışını anlatıyor. Donanımı büyütme zamanı geldiyse Batihost Minecraft sunucu paketleri Ryzen ve NVMe tabanlı yapılandırmalarla 156 TL’den başlıyor.