Sol Reklam

Rehber Minecraft Optimize Edilmiş Sunucu Başlatma Kodu

Durum
Mesaj gönderimine kapalı.

LifeMCServer

Yaratık Tuzağı: Çalışıyor

Discord:

!?мυѕтαғα öɴcel#8713

Katılım
18 Kasım 2016
Mesajlar
698
Elmaslar
470
Puanlar
15.415
Yaş
24
Yer
İstanbul
Minecraft
LifeMCServer
Facebook
mustafathegamer
Twitter
LifeMCServer
optimize-before-you-automate.jpg


V2.X BETA
Yeni recode sürümü çıktı:

Merhabalar
Minecraft sunucularınızda kullanacağınız gelişmiş ve en optimizeli sunucu başlatma yani start komutunu anlatacağım.
Öncelikle özellikleri açıklayıp daha sonra kodu aşağıya bırakıyorum. Ondan sonrasında da yapmanız gereken değişiklikleri ve her kodun teker teker ne iş yaptığını açıklayacağım.

Özellikler
- CMD Başlığını düzenleyebilme
- Echo mesajlarıyla sunucu hakkında gerekli içerikleri sunması
- TPS problemini en aza indirmek amaçlı optimize edilmiş başlat komutları
- İşe yaramayan ayarlamaları ve argümanları silme
- Sunucu kendiliğinden kapanırsa veya sunucu çökerse sunucuyu otomatik başlatma

Uyumluluk
java-png-java-june-1-2014-public-728.png


Java 8 veya JDK 8 sürümünde uyumlu çalışmaktadır. Java 8'in alt veya üst sürümlerini kullanıyorsanız çeşitli problemler yaşayabilirsiniz.
Kodumuz
Bash:
@echo off
chcp 65001 > nul
title Sunucu Konsolu
:start
echo Serveriniz acilmak uzere
java -XX:+UnlockExperimentalVMOptions -d64 -server -Xms1M -Xmx8G -XX:-HeapDumpOnOutOfMemoryError -XX:SoftRefLRUPolicyMSPerMB=1000 -XX:-UseCompressedOops -XX:+TieredCompilation -XX:+UseLWPSynchronization -XX:+UseBiasedLocking -XX:+UseFastAccessorMethods -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:+UseLargePagesInMetaspace -XX:+AggressiveOpts -XX:+DisableExplicitGC -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Duser.language=EN -Duser.country=US -Dpaper.playerconnection.keepalive=120 -Dlog4j.skipJansi=true -jar LifeSpigot.jar -nojline -o false --log-strip-color --log-append=false nogui
echo Sunucu kapandi. Yeniden baslatilmasini istemiyor iseniz pencereyi kapatin.
echo Gunluk temizlik baslatiliyor..
echo Dosyalar siliniyor...
del \plugins\NoCheatPlus\*.log /q
del \plugins\NoCheatPlus\*.lck /q
del \plugins\NoCheatPlus\*.log.* /q
del \plugins\AntiAura\logs\*.* /q
del \plugins\AuthMe\authme.log /q
del \plugins\bStats\temp.txt /q
echo Dosyalar basariyla silindi. Serveriniz aciliyor
timeout 5 > nul
goto start


Yukarıda ki Kod da değiştirmeniz gereken kısımlar
1.) Ram miktarını sunucunuzun ram miktarına göre ayarlamanız gerekiyor. Mesela 6GB'lik bir sunucunuz varsa ve bu sunucunuz panel sistemi değilde masaüstü - linux'a ait bir sistemse 5.5GB olarak tanımlamalısınız. 5500M gibi.
. -Xmx8G kısmını, makinenizin toplam RAM miktarı - 1 veya - 2 olarak ayarlamanızı tavsiye ederim. Eğer değiştirmez iseniz "insufficient memory", "unable to launch jvm" veya "out of memory" tarzı hatalar alabilirsiniz.

2.) -jar LifeSpigot.jar kısmını değiştirmelisiniz. Buradaki LifeSpigot.jar kısmını sizde artık "spigot.jar" veya "craftbukkit.jar" olabilir, onun ile değiştirmelisiniz. Değiştirmez iseniz "unable to access jarfile LifeSpigot.jar" tarzı bir hata alabilirsiniz.


Yapmanız gereken değişiklik bu kadar.


Değiştirmenizi Önerdiklerim
Bunları değiştirmeseniz de olur fakat sadece önerimdir.

İlk olarak @echo off dan sonraki satırda bulunan title Sunucu Yonetim Kontrol Paneli kısmını değiştirmeniz tavsiyem. Özellikle eğer BungeeCord kullanıyor ve bir çok sunucunun CMD penceresini aynanda açık olarak ekranda görünüyor iseniz hepsinin aynı başlığa sahip olması karışıklık çıkaracaktır. Hepsine "Faction Yonetim Kontrol Paneli" tarzı isimler verip ayırabilirsiniz. Örneğin verdiğim örmek için kod "title Faction Yonetim Kontrol Paneli" olmalı, iki tırnak işaretleri olmadan tabii. Bir de türkçe karakter kullanmamanız tavsiyem.

-XX:+DisableExplicitGC: Bu ayar RAM kullanımını biraz daha esnekleştirir ve GC'leri azaltarak donmaları azaltmayı hedefler. İsterseniz kapatabilirsiniz, RAM kullanımınız yüksek ise ilk olarak bunu silip tekrar deneyin.

-Djava.awt.headless=true: Bu ayar makinede ekran olmadığını belirtiyor yani GUI vs. açan uygulamalar çalışmıyor. Sunucu da zaten bu tür şeyler genelde olmaz. Başka bir oyuna veya client'e uyarlayacak iseniz bunu kaldırmanız tavsiyem.

-Dlog4j.skipJansi=true: Eğer sunucu başlangıcında "WARN unable to insaniaite org.fusesource.jansi .." tarzı bir hata alıyor iseniz bu ayar onu kapatıyor. Altını çiziyorum çözmüyor, kapatıyor. Gereksiz bir uyarı mesajı sadece. Zaten -njline ile JLine'ı kapatıyoruz.

-nojline: JLine, yani konsolda yazıların oyun içindeki renk kodları gibi renkli olmasını ve üst tuşuna basarak konsola girdiğimiz komutları tekrar etmemizi sağlayan kütüphaneyi kapatmaya yarıyor. Bir performans artışı sağlar belki fakat ben zaten renkli olunca karışık olduğunu düşündüğüm ve makineden konsola zaten nadiren baktığım için (log dosyaları diye bir şey var) JLine'ın kapalı kalması daha mantıklı geliyor.

-o false: Bu ayar online-mode'u kapatıyor. Yeni spigot sürümlerinde kaldırıldı diye hatırlıyorum. Emin olmak için eklemiş olabilirim. Siz kaldırabilirsiniz.

nogui: BukkitGUI tarzı programlar kullanıyor iseniz kaldırabilirsiniz. Bukkit'in içine çok eski sürümlerde gömülü olan bir sistem vardı onu kapatıyor diye hatırlıyorum. Şuanda bir işlevi var mı bir bilgim yok bu ayarın.

del XX.log /q vb. kısımlar: Bunlar otomatik bazı gereksiz bulduğum log ve geçici dosyaları siliyor. Ne kadar gerekli bilinmez. Bir artı sağlamıyor bana ama uzun zamandır ekli olan bir kod. Silmekte özgürsünüz.


JVM Argümanları ve Anlamları
Bu kısımı normal bir kullanıcı iseniz okumanıza gerek yok. Buraya kadar çok okudunuz bile, tebrikler :D Yinede okumak istiyorsanız okuyabilirsiniz, ekstra bilgi hiç bir zaman kötü değildir.

JVM argümanları, veya daha doğru bir deyiş ile JVM komut satırı başlatma argümanları, bir kaç şekle ayrılır.

İlk olarak en çok kullanılan direk -ayar şeklinde yazılan ayarlar. Mesela -Xms1M gibi.
İkinci olarak kullanıcı parametreleri. Mesela -Duser.language=EN gibi.
Üçüncü olarak -XX: ile başlayan gelişmiş ayarlar.

Bu gelişmiş ayarlarda eğer -XX: den sonra - var ise o o ayarın kapatılacağı, + var ise açılacağı anlamına gelir.

Gelişmiş ayarlar genelde normal ayarlar kadar güvenli değildir.
Bende bu kodlar hakkında herhangi bir garanti sağlamıyorum fakat kendi sunucumda uzun süredir kullandığımı ve bir çok sunucunun kullanıp memnun olduğunu söyleyebilirim.

Her neyse.. Şimdi uzun kısma gelelim. Sizin için teker teker her özellik, ayar ne işe yarıyor açıklamaya çalıştım.
Buyrunuz:


JVM Argümanlarının Anlamları

-XX:+UnlockExperimentalVMOptions: Bazı gelişmiş ayarların kilidini açmaya yarıyor.
-d64: JVM'yi 64-bit JVM olarak ayarlıyor. Zaten 64-bit JVM yükledi iseniz bu 64-bit seçiyor otomatik diye biliyorum fakat bu emin olmak için :D
-server: JVM'yi önceden konfigüre edilmiş sunucular için önerilen ayarlar ile donatıyor.
-Xms1M: Sunucunun 1MB ram ile başlayıp sadece ihtiyacı olduğunda RAM yemesini sağlıyor.
-Xmx8G: Maksimum RAM miktarını 8GB olarak belirliyor. Bu RAM miktarı aşıldığında JVM otomatik Out Of Memory hatası verecektir.
-XX:-HeapDumpOnOutOfMemoryError: Out Of Memory hatasına karşın head dump yapmayı kapatıyor. Head dump yapmak eğer işletim sistemininde RAM miktarı az kalmış ise durumu daha kötü etkiler, eğer geliştirici iseniz ve bu Out Of Memory hatası uygulamanızın basit şekilde çok fazla thread açmasından kaynaklanmıyor ise, sorunu çözmek ve kaynağını tespit etmek için başındaki - yi + yaparak head dump özelliğini açabilirsiniz.
-XX: SoftRefLRUPolicyMSPerMB=1000: Soft Reference objelerinin ne kadar süre boyunca hayatta kalacağını yani GC ile öğütülmeyeceğini belirliyor. Varsayılan değer bu sanırım ama yine de kalabilir.

-XX:+UseCompressedOops: Sıkıştırılan obje kullanmayı falan aktifleştiriliyordu sanırım. Bu argümanların çoğunu Oracle'nin sitesinde farklı makalelerde listelerde buldum diye hatırlıyorum.
-XX:+TieredCompilation: Java kodu Native koda dönüştürülür iken birden fazla thread kullanarak daha hızlı dönüştürme yapmaya yarıyordu diye hatırlıyorum.
-XX:+UseLWPSynchronization: Daha lightweight bir senkronize sistemi kullanmaya yarıyordu sanırım, bu şekilde performans artışı sağlıyor.
-XX:+UseBiasedLocking: Lock sistemini değiştiriyor ve yine daha lightweight bir sisteme geçiriyor diye hatırlıyorum.
-XX:+UseFastAccessorMethods: Methodlara daha hızlı erişmeye yarayan bir özelliği açıyor.
-XX:+UseG1GC: G1GC çöp toplayıcı (GC) sistemini kullanması konusunda JVM'ye bilgi veriyor.
-XX:+UseStringDeduplication: Bu ayar birden fazla kullanılan string objeleri için aynı objeyi kullanıyor. Kısaca aynı değeri temsil eden yazılar için bir den fazla string objesi açılmıyor. String cache tarzı bir sistem yani.
-XX:+ParallelRefProcEnabled: Paralel olarak referans objelerini işlemeyi açıyor. Paralel multi-threaded demek yani aynanda birden fazla iş yapılabiliyor.
-XX:+UseLargePagesInMetaspace: Metaspace adlı bellek bölümünde large pages denen sistemi kullanıyor.
-XX:+AggressiveOpts: JVM'nin bazı güvensiz optimizeleri yapmasına izin veriyor. Güvensiz değilde daha çok experimental, JDK11 de bu ayar kaldırılıp default oldu sanırım.

-XX:+DisableExplicitGC: Bu ayar bu kod arasında en çok tartışma yaratacak kod belkide. RAM kullanımını yükselttiği doğrudur. Fakat RAM kullanımını yükselten bu değil. Zaten -Xms1M sayesinde 1MB ile başlayıp ihtiyacı olunca yükselmesini ayarlamıştık. Yani kısaca bu koddan sonra RAM kullanımı artar ise o sizin sunucunuzun yediği RAM'dir. Sadece eğer bu ayarı kaldırır iseniz o RAM sürekli azaltılmaya çalışır ve JVM uygulama taraflı gelen güvensiz GC isteklerini de işler, bu da daha fazla GC demek. Eğer React tarzı bir eklenti otomatik GC yapıyor ise ve bu donmalara neden olabiliyor ise bu kod onu çözecektir fakat RAM kullanımını arttıracaktır. Bu arada RAM kullanımının artmasının hiç bir zararı yok. JVM ihtiyacı olduğunda hala GC yapacaktır. Bu kod GC'yi kapatmaz sadece kullanıcı kodundan gelen GC isteklerini yoksayar, yani sadece gerçekten ihtiyacı olduğunda GC yapar. Buda RAM gerekmediği zaman yüksek kullanılır demek.

-Djava.awt.headless=true: Bunu zaten yukarıda açıklamıştım.
-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Duser.language=EN -Duser.country=US: Bu kodların hepsi türkiye makinelerde çıkan UTF-8 (türkçe karakter) sorunlarını çözmek için eklenen kodlar.
-Dpaper.playerconnection.keepalive=120: java.io.IOException: Connection forcibly closed by remote host tarzı hataları azaltmak için timeout süresini arttıran kod. Varsayılan 30 diye biliyorum 60-120 arası kullanabilirsiniz.
-Dlog4j.skipJansi=true: Bunu ve diğer Java argümanı olmayıpta program / spigot argümanı olan bir kaç şeyi daha yukarıda açıklamıştım, bakabilirsiniz.



Başka bir anlamadığınız veya sormak istediğiniz kod var ise cevaplamaktan mutluluk duyarım.
Bir sonraki konularda görüşmek üzere..
 

Ekler

  • 8cd5cb93144a40bb4fdc66fb64b41ae5.jpg
    8cd5cb93144a40bb4fdc66fb64b41ae5.jpg
    11,8 KB · Görünt.: 30
Son düzenleme:

Furkan Oruc

Ayıpsınn knksszz

Discord:

Furkan Oruc#8686

Katılım
23 Kasım 2017
Mesajlar
949
Elmaslar
474
Puanlar
16.525
Yaş
23
Yer
İstanbul
Minecraft
Lijye
Ellerine sağlık gerçekten bir şeyler yapıp bizlerin gelişmesine yardımcı oluyorsun .
 
S

Silinen üye 79251

Ziyaretçi

Gerçekten ellerine sağlık. Sunucu sahipleri için çok yararlı bir komut. Ayrıca Mustafa seni bu forumda görmek gurur verici.
 

LifeMCServer

Yaratık Tuzağı: Çalışıyor

Discord:

!?мυѕтαғα öɴcel#8713

Katılım
18 Kasım 2016
Mesajlar
698
Elmaslar
470
Puanlar
15.415
Yaş
24
Yer
İstanbul
Minecraft
LifeMCServer
Facebook
mustafathegamer
Twitter
LifeMCServer
Ellerine sağlık gerçekten bir şeyler yapıp bizlerin gelişmesine yardımcı oluyorsun .

Teşekkürler, bilgi paylaşıldıkça çoğalır. :)


Gerçekten ellerine sağlık. Sunucu sahipleri için çok yararlı bir komut. Ayrıca Mustafa seni bu forumda görmek gurur verici.

Ara sıra girip bildirimlere bakıp çıkıyordum bu sefer bir kaç konu da açayım dedim. Amacım içeriklerimi daha fazla insana ulaştırmak. Yorum için teşekkürler bu arada :)
 

WinstonTR

o güzel insanlar o güzel atlara binip gittiler
Katılım
29 Temmuz 2018
Mesajlar
284
Elmaslar
152
Puanlar
4.305
Yer
Kanada Ontario
Minecraft
WinstonTR
del \plugins\NoCheatPlus\*.log /q
del \plugins\NoCheatPlus\*.lck /q
del \plugins\NoCheatPlus\*.log.* /q
del \plugins\AntiAura\logs\*.* /q
del \plugins\AuthMe\authme.log /q
del \plugins\bStats\temp.txt /q
bu kısım sizin paketinize göre mi ayarlandı ?
kendimize göre düzenleyebilirmiyiz

bide elinize emeginize saglık
 

LifeMCServer

Yaratık Tuzağı: Çalışıyor

Discord:

!?мυѕтαғα öɴcel#8713

Katılım
18 Kasım 2016
Mesajlar
698
Elmaslar
470
Puanlar
15.415
Yaş
24
Yer
İstanbul
Minecraft
LifeMCServer
Facebook
mustafathegamer
Twitter
LifeMCServer
del \plugins\NoCheatPlus\*.log /q
del \plugins\NoCheatPlus\*.lck /q
del \plugins\NoCheatPlus\*.log.* /q
del \plugins\AntiAura\logs\*.* /q
del \plugins\AuthMe\authme.log /q
del \plugins\bStats\temp.txt /q
bu kısım sizin paketinize göre mi ayarlandı ?
kendimize göre düzenleyebilirmiyiz

bide elinize emeginize saglık

Evet kendime göre ayarlamıştım düzenleyebilirsiniz tabii ki konuda hepsinin ne işe yaradığını anlatmıştım zaten. NoCheatPlus, AuthMe ve bStats zaten neredeyse her sunucuda olan eklentiler, authme.log dosyası giriş yapan oyuncuları vesaire kaydediyor gereksiz bir dosya benim gözümde, bStats temp.txt de yine gereksiz bir dosya, bunun dışında NoCheatPlus'un log dosyaları ve AntiAura'nın log dosyalarını da siliyor sunucu kapandığında yeniden açmadan önce. Sunucuya bir zararı olmaz fakat bu log dosyalarına bakıp işlem yapıyor iseniz düzenli olarak inceliyor vb. iseniz kaldırabilirsiniz. Sunucu loglarını silmiyor sadece eklentilerin loglarını siliyor diler iseniz ona göre de ayarlayabilirsiniz.
 

GorkemBaşkan

VPS:ON
Katılım
11 Mart 2017
Mesajlar
318
Elmaslar
86
Puanlar
13.960
Yaş
24
Yer
Çanakkale
acaba logs klasörünü de silebilirmiyiz ?
 

Furkan Oruc

Ayıpsınn knksszz

Discord:

Furkan Oruc#8686

Katılım
23 Kasım 2017
Mesajlar
949
Elmaslar
474
Puanlar
16.525
Yaş
23
Yer
İstanbul
Minecraft
Lijye

EchTR

echtr of legend

Discord:

EchTR#1848

Katılım
2 Aralık 2016
Mesajlar
845
Elmaslar
629
Puanlar
8.060
Yer
İzmir
Gerçekten yaralı bir konu olmuş, hepsini okumasam da emeklerinize sağlık. :)
 

GorkemBaşkan

VPS:ON
Katılım
11 Mart 2017
Mesajlar
318
Elmaslar
86
Puanlar
13.960
Yaş
24
Yer
Çanakkale

dequay2000

Bir Kömür Göründü Kaptanım!
Katılım
12 Temmuz 2018
Mesajlar
116
Elmaslar
22
Puanlar
0
Yaş
24
Minecraft
dequay
çok yararlı olmuş ellerine sağlık
 

Furkan Oruc

Ayıpsınn knksszz

Discord:

Furkan Oruc#8686

Katılım
23 Kasım 2017
Mesajlar
949
Elmaslar
474
Puanlar
16.525
Yaş
23
Yer
İstanbul
Minecraft
Lijye

GorkemBaşkan

VPS:ON
Katılım
11 Mart 2017
Mesajlar
318
Elmaslar
86
Puanlar
13.960
Yaş
24
Yer
Çanakkale

RisardHacker

Demir Cevheri Gibiyim
Katılım
10 Kasım 2016
Mesajlar
223
Elmaslar
145
Puanlar
13.820
Yer
İstanbul
Minecraft
TheBreakee
Eyvallah adamsın :)
 
Durum
Mesaj gönderimine kapalı.
Neden altınlarını Discord sunucumuzda kazmıyorsun? TIKLA VE KATIL!
Yukarı