Java bellek ayarları: sunucu neden aniden kapanıyor (kod 137)
Minecraft sunucularında kod 137 ile ani kapanmaların nedenleri, Java bellek alanları ve topluluk kaynaklı bellek bayrağı önerileri.
Kısaca
- Panel bellek sınırı sert bir konteyner sınırıdır; Java sürecinin toplam tüketimi bu sınırı aştığında sunucu aniden kapatılır ve konsolda kod 137 görünür.
- Tüm panel belleğini -Xmx değerine ayırmak diğer Java bellek alanlarına pay bırakmaz ve ani kapanmaya yol açar.
- Paketin başlatma değişkenlerini değiştirmeye izin veriyorsa bu bayrakları uygulayabilir, aksi halde destek talebi açabilirsin.
İhtiyacınız olanlar
- Panel üzerinden konsol ve Başlatma (Startup) sekmesine erişim
- Aktif bir Minecraft hizmeti
Bu sayfada
Minecraft & Oyun Sunucuları rehberleri
1. Kod 137 ve ani kapanmanın nedeni#
Panel bellek sınırı sert bir konteyner sınırıdır. Java sürecinin toplam kullanımı (heap, off-heap, metaspace ve thread bellekleri) bu sınırı aştığında sistem sunucuyu loglarda çoğu zaman hiçbir hata kaydı bırakmadan anında sonlandırır ve konsolda çıkış kodu 137 görünür. Başlatma komutunda -Xmx değerini panel sınırının tamamına eşitlemek Java'nın diğer bellek alanlarına hiç pay bırakmadığı için bu ani durmanın en yaygın nedenidir. Ayrıca -XX:MaxDirectMemorySize ayarlanmadığında Java doğrudan (off-heap) belleğin varsayılan olarak heap boyutuna kadar büyümesine izin verir ve ağ arabellekleri toplam kullanımı sınırın üzerine taşır. -XX:+AlwaysPreTouch bayrağı ise açılış anında belleği rezerve eder; heap sınırla eşit verildiğinde sunucunun ilk saniyelerde kapanmasına yol açabilir.
2. Topluluk tahminlerine göre bellek kuralları#
- Topluluk tahminlerine göre -Xmx için kaba kurallar: 3 GB'a kadar olan sunucularda panel sınırından yaklaşık 800 MB boşluk bırakılır.
- Topluluk tahminlerine göre 4-8 GB arası sunucularda panel sınırından yaklaşık 1.2-1.5 GB boşluk bırakılması önerilir.
- Topluluk tahminlerine göre 10 GB ve üzeri sunucularda panel sınırının yaklaşık %80'i -Xmx olarak ayrılır.
- Sık önerilen ek bayraklar: 3 GB'a kadar sunucularda -XX:MaxDirectMemorySize=256M, 4-8 GB için 512M, 10 GB ve üzerinde 1024M; doğrudan bellek değerinin çok küçük tutulması OutOfMemoryError: Direct buffer memory hatasına yol açabilir.
- Metaspace için topluluk önerisi: -XX:MaxMetaspaceSize=256M.
- Çok sayıda CPU çekirdeğine sahip makinelerde gereksiz ağ bellek havuzu oluşmasını önlemek için: -Dio.netty.allocator.numDirectArenas=2.
- -XX:+AlwaysPreTouch bayrağı başlatma anında belleği önceden ayırır; sınırın tamamı heap olarak verildiğinde sunucunun ilk saniyelerde kapanmasına yol açabilir.
3. Bellek ayarlarını uygulama adımları#
Konsol ve kullanım grafiğini kontrol et
Panelde Konsol sekmesine git. Canlı kullanım grafiğini ve kapanma anındaki logları inceleyerek sunucunun hata mesajı vermeden kapanıp kapanmadığını ve kod 137 çıktısını kontrol et.
-Xmx değerini panel sınırının altına çek
Paketin başlatma değişkenlerini değiştirmeye izin veriyorsa sunucu boyutuna göre -Xmx değerini panel sınırının altına çekerek off-heap ve metaspace alanlarına pay bırak; aksi halde destek talebi açabilirsin.
Doğrudan bellek sınırını ekle
Ağ paketlerinin aşırı bellek tüketmesini engellemek için -XX:MaxDirectMemorySize bayrağını (örneğin 256M veya 512M) ve gerekirse -XX:MaxMetaspaceSize=256M parametresini ekle.
Sunucuyu yeniden başlat ve izle
Değişikliklerin devreye girmesi için sunucuyu yeniden başlat. Konsol grafiğinden toplam bellek kullanımının panel sınırının güvenli bir mesafede altında kaldığını gözlemle.
4. Bellek sorunları ve çözümleri#
Bellek kaynaklı sık karşılaşılan sorunlar
Sunucu hata vermeden aniden duruyor (kod 137)
Java sürecinin toplam bellek kullanımı paneldeki sert konteyner sınırını aşmıştır; en yaygın neden -Xmx değerinin tüm panel belleğine eşitlenmesidir
Paketin başlatma değişkenlerini değiştirmeye izin veriyorsa -Xmx değerini topluluk kurallarına göre panel sınırının altına çek; aksi halde destek talebi açabilirsin
Konsolda OutOfMemoryError: Direct buffer memory hatası
Doğrudan bellek sınırı (-XX:MaxDirectMemorySize) sunucunun ağ trafiği veya oyuncu yükü için yetersiz kalmıştır
Doğrudan bellek sınırını kademeli olarak yükselt (örneğin 256M yerine 512M) ve gereksiz ağ havuzlarını sınırlamak için -Dio.netty.allocator.numDirectArenas=2 bayrağını kullan
Bu rehber işinize yaradı mı?
Geri bildiriminiz doğrudan rehberi güncelleyen ekibe gider.
Çözüm bulamadınız mı?
Destek ekibimize panelden talep açabilirsiniz.

