Minecraft Sunucusu İçin Kaç GB RAM Gerekir?
Java, Paper ve modlu Minecraft sunucuları için RAM ihtiyacını hesaplayın.
8 GB RAM’li bir PC’de arkadaşlara sunucu açıyorsunuz. Başlatma dosyasına -Xmx8G yazmak kolay: RAM 8, Java da 8 kullansın. Sonra Windows’u, tarayıcıyı, aynı PC’de oynayacaksanız Minecraft client’ını hatırlıyorsunuz. Daha kimse giriş yapmamışken sistem belleği paylaşacak yer bulamıyor. Sorun bazen sunucuda değil, o tek satırda.
Hesap makinesindeki “Önerilen Java heap” ve “Gerekli toplam RAM” sonuçlarına ayrı bakın. İlkini -Xmx için kullanırsınız. İkincisi, PC’de veya kiraladığınız sunucuda ne kadar RAM bulunması gerektiğini söyler. Ben bu ikisini ayırmadan “8 GB yeter” cevabı vermem. Oyuncu sayısı tek başına o cevabı taşımıyor.
On oyuncu her zaman aynı yük değil
Spawn’da buluşmakla haritaya dağılmak
Oyuncu sayısına kayıtlı hesapları değil, aynı anda oyuna girecek kişileri yazın. 10 kişi spawn çevresinde base kurarken aynı chunk’lara bakar. Elytra’yla dört yana açıldıklarında iş değişir. Sunucu bir yandan yeni alanları yükler, öte yandan henüz kimsenin görmediği araziyi üretir. Akşamın başındaki 10 kişiyle sonundaki 10 kişi aynı RAM yükünü bırakmaz.
Hesap yaparken grubun nasıl oynadığına bakarım. Herkes ortak bir bölgede takılıyorsa “Çoğunlukla aynı bölgede” seçimi yerinde. Survival dünyasında herkes kendi üssüne dağılıyorsa “Farklı bölgelerde / bilmiyorum” daha yakın. Keşif de yoğunsa onu ayrıca işaretleyin. Hesap makinesi chunk yüküne yüzde 25 ekler. Sırf ihtiyatlı görünmek için oyuncu sayısını kafadan yirmiye çıkarmak, farkın nereden geldiğini gizler.
Görüş ve simülasyon mesafesini de server.properties dosyasından kontrol edin. Görüş, oyuncuya gönderdiğiniz alan. Simülasyon ise mobların ve oyun olaylarının çalıştığı çevre. Form ilk açıldığında 8 ve 6 chunk yazar. Modern sürüm hesabında ikisinden büyük olan mesafe belirleyici. Görüş 8 iken simülasyonu 6’dan 7’ye çektiğinizde RAM sonucu aynı kalabilir. Tick yükü için aynı şeyi söyleyemeyiz. “1.17 ve öncesi” profilinde araç simülasyon mesafesini hesaba katmaz.
Eklenti sayısını da tek başına okumayın
Paper, Purpur ve Spigot için eklenti sayısını ve ortalama yükünü giriyorsunuz. Fabric, Forge ve NeoForge’da mod sayısı devreye giriyor. Vanilla’da bu eski girişlerin hiçbirini hesap makinesi kullanmıyor. “Hafif / orta / ağır” seçeneklerini tek tek eklentilerin ölçülmüş RAM tüketimi sanmayın. 10 küçük izin eklentisiyle arka planda haritayı renderlayan bir eklenti aynı kefeye konmaz.
Mod paketi kurarken ben önce paketin sunucu için verdiği heap önerisini ararım. Bulursanız “Modpaketinin RAM önerisini kullan” kısmına girin. Araç o rakamın altına inmez. Client için yazan öneriyi buraya taşımayın. İki ayrı oyun sürecinden söz ediyoruz. Paketin yükünü kestiremiyorsanız “orta” ile “ağır” sonucu yan yana görün. Aradaki fark, daha büyük hosting paketi gerekip gerekmediğini tartışmak için mod sayısından daha işe yarar.
Hesap makinesinde hangi sayıyı nereye yazmalı?
Yeni sunucu kuruyorsanız “RAM ihtiyacını hesapla”, eldeki PC’yi sınayacaksanız “Bilgisayarımı kontrol et” yolunu seçin. İki yolun sunucu hesabı aynı. Burada en kolay atlanan şey formun başlangıç değerleri: Paper ve 10 eklenti hazır geliyor. Kurulumda tek eklenti yoksa 10’u sıfırlayın. Sonra sürümü, görüş mesafesini ve gerekiyorsa simülasyon mesafesini kendi sunucunuzdaki gibi yazın. Yoğun çiftlik, redstone, web haritası veya ek dünya planınız varsa gelişmiş ayarlara geçin. Yoksa sırf kutu göründü diye işaretlemeyin.
Çalışma payı ilk açılışta yüzde 25. Gelişmiş ayarlarda bunu yüzde 10 ile 100 arasında değiştirebilirsiniz. O ayarları kapattığınız an ek yükleri hesap dışına çıkarır, payı da yeniden yüzde 25’e döndürürsünüz. Bir denemede 6 GiB, diğerinde 9 GiB gördüyseniz önce hangi anahtarların açık olduğuna bakın. Sonucun yanına kullandığınız girdileri de yazın. Sonra farkı ararken başa dönmek gerekmez.
8 GB, yaklaşık 7,45 GiB eder. İlanda GB yazıyorsa forma GB girin. Sanal makine ya da container fiziksel RAM’in yalnızca bir kısmını kullanabiliyorsa sınır olarak o kısmı yazın. “8 yazdım, 8 çıktı” diye rahatlamak kolay. İki tarafta farklı birim seçtiyseniz karşılaştırma daha baştan kayar. Hele sonuç yarım GiB sınırındaysa.
Ekrandaki iki RAM sonucu
Heap sayısını makine kapasitesi sanmayın
Java heap, sunucunun Java nesneleri için kullanabileceği üst sınır. Toplam RAM ise işletim sistemine ve Java’nın heap dışında kullandığı belleğe de yer açıyor. Hesap makinesi bu ek Java kullanımı için en az 1 GiB ayırıyor. Heap’in yüzde 15’i daha yüksekse onu alıyor, ardından sonucu yarım GiB’ye yukarı yuvarlıyor. Ekranda 3,5 GiB heap varsa ürettiği -Xmx3584M de o kadar. Hosting paketi seçerken -Xmx rakamını paket RAM’i sanmayın.
Şu kurulumla deneyin: 10 oyunculu Paper, modern sürüm, 8 chunk görüş, 6 chunk simülasyon, orta yükte 10 eklenti. Gelişmiş ayarlar ve Chunky kapalıyken araç 3,5 GiB heap, 6,5 GiB toplam RAM veriyor. Masaüstüsüz Linux çalışan 8 GiB makinede, başka uygulamaya ek pay ayırmıyorsanız bellek hesabı sığıyor. Şimdi Windows’u ve aynı PC’de Minecraft client’ını düşünün. Diğer uygulamalara 1 GiB, client’a 4 GiB yazınca toplam gereksinim 13,5 GiB’ye çıkıyor. 8 GiB makine burada yetmiyor. Paper’a bir eklenti bile eklemedik. RAM’i yiyen öteki işler.
Bilgisayar kontrolü masaüstüsüz Linux’a 2 GiB, masaüstlü Linux’a 3 GiB, Windows ve macOS’a 4 GiB sistem payı koyuyor. Container’da ana makinenin işletim sistemi payını eklemiyor. İçeride başka servisler dönüyorsa onların RAM’ini “Diğer uygulamalar” kısmına yazmanız gerekiyor. Makine yetmediğinde hesap makinesi heap’i otomatik küçültmez. Eksik yeri açıkça gösterir.
Vanilla’dan mod paketine geçiş
Yine 10 oyuncu ve 8/6 chunk ayarları. Vanilla’da 3 GiB heap, 6 GiB toplam RAM çıkıyor. Paper’a orta yükte 10 eklenti eklediğinizde 3,5 ve 6,5 GiB. Orta yükte 50 modlu Fabric örneği 5 ve 8 GiB, Forge örneği 6 ve 9 GiB gösteriyor. Bu sonuçları “Fabric her koşulda Forge’dan hafiftir” diye yorumlamam. Paketlerin içindeki modlar değişince karşılaştırma da değişir. Sayılar yalnızca aynı girdilerle hesap makinesinin nasıl davrandığını gösteriyor.
Paper örneğinde oyuncular aynı bölgede kalırsa 3 GiB heap ve 6 GiB toplam RAM görürsünüz. Dağılıp yeni arazi keşfederlerse 4 ve 7 GiB. İki senaryoda da oyuncu sayısı 10. O yüzden “oyuncu başına şu kadar RAM” tavsiyesine tek başına güvenmem. Yoğun çiftlik, web haritası, özel dünya üretimi ve iki ek aktif dünya eklediğinizde aynı hesap 6 GiB heap ile 9 GiB toplam RAM’e varıyor. Burada dört anahtarı birden açıp sonucu seyretmektense tek tek deneyin. Hangi yükün hesabı zıplattığını o zaman görürsünüz.
Chunky hesabı ile çalışan sunucunun ölçümü
Chunky’de önce dünya adını, merkezi, şekli ve yarıçapı seçiyorsunuz. Karede alan 4 × yarıçap², dairede π × yarıçap². Bir chunk 16 × 16 blok kapladığı için hesap makinesi alanı 256’ya bölüyor. Merkez 0, 0 ve kare yarıçap 3000 bloksa 140.625 chunk çıkıyor. Yarısı önceden oluşmuşsa geriye 70.313 kalıyor. Yarıçapı 6000 yapınca 562.500 chunk. 3000 blok ekledik diye iş iki katına çıkmıyor. Alan dört katına ulaşıyor. Yarıçap kutusundaki sayıyı bir kez daha kontrol edin.
Chunky’yi açınca örnek Paper sunucusunun heap önerisi 4 GiB’ye, toplam RAM’i 7 GiB’ye yükseliyor. Disk ve süre için kısa bir deneme üretimi yapabilirsiniz. 10.000 yeni chunk, 256 MiB klasör büyümesi ve 300 saniye girerseniz kalan 140.625 chunk için yaklaşık 3,52 GiB disk ve 1,17 saat görürsünüz. Dünya üretimi boyunca hız sabit kalmayabilir. Ölçüme yedekleri veya web haritası dosyalarını katmayın. Komutu göndermeden önce de dünya adını ve yarıçapı okuyun. Fazladan bir sıfır, hem süreye hem diske yansır.
Sunucuyu açtınız, oyuncular dağıldı, TPS düştü. Hemen -Xmx büyütmeyin. TPS saniyedeki oyun güncellemesi sayısı, MSPT ise bir güncellemenin kaç milisaniye sürdüğü. /spark tps ile ikisini görün. Yoğun anda Spark profili alınca sürenin dünya üretiminde mi, eklentide mi geçtiğini anlayabilirsiniz. Çöp toplama baskısını GC verilerinden ayrıca okuyun. OOM hatasıyla kapanan sunucuda RAM sınırı ve -Xmx ilk bakılacak yer. Bellek boşken TPS düşüyorsa önce profiler çıktısını açarım. Yeni RAM paketini sonra düşünürüm.