Optimize Edilmiş Sunucu Başlatma Kodu - Tüm Sunucular İçin

Bu konu süresiz olarak sabitlenmiş.

Samet77

Kömür Madencisi
Mesajlar
128
En iyi cevaplar
1
Beğeniler
11
Puanları
50
Ruh hali
137844

Böyle bir hata alıyorum yardımcı olabilirmisiniz ?
 

JohnWick

Zombi Katili
Mesajlar
191
En iyi cevaplar
0
Beğeniler
39
Puanları
230
hocam bunu renkli halde yapabilirmisin acaba hatarı kırmızı ille yazıcak elimde bir tane var ama siiznkiyle birleştirince olmuyor
Kod:
@echo off
echo (%time%) Server Baslatildi.
title Tanimsiz
color 0A
prompt [server]:
cls

:start
echo (%time%) Server Baslatildi.
java -Xms512M -Xmx2048M -Duser.language=en -Duser.region=EN -jar -jar spigot.jar
PAUSE
 

LifeMCServer

Nether Yerlisi
Mesajlar
2,410
En iyi cevaplar
98
Beğeniler
2,461
Puanları
10,250
Ruh hali
Ekli dosyayı görüntüle 137844
Böyle bir hata alıyorum yardımcı olabilirmisiniz ?

JRE yerine JDK kullanırsanız sorun çözülecektir. Eğer JRE ile çalıştırmak istiyorsanız başlardaki -server kısmını kaldırın.

hocam bunu renkli halde yapabilirmisin acaba hatarı kırmızı ille yazıcak elimde bir tane var ama siiznkiyle birleştirince olmuyor
Kod:
@echo off
echo (%time%) Server Baslatildi.
title Tanimsiz
color 0A
prompt [server]:
cls

:start
echo (%time%) Server Baslatildi.
java -Xms512M -Xmx2048M -Duser.language=en -Duser.region=EN -jar -jar spigot.jar
PAUSE

Konuda yazdığı üzere -nojline kısmını silerseniz renkli olması gerek.
 

Samet77

Kömür Madencisi
Mesajlar
128
En iyi cevaplar
1
Beğeniler
11
Puanları
50
Ruh hali
JRE yerine JDK kullanırsanız sorun çözülecektir. Eğer JRE ile çalıştırmak istiyorsanız başlardaki -server kısmını kaldırın.



Konuda yazdığı üzere -nojline kısmını silerseniz renkli olması gerek.
JRE yerine JDK kullanırsanız sorun çözülecektir derken nasıl kullanıcağım JDK yı ve -server kısmını sildim ama hala hata alıyorum şöyle
Ekran Alıntısı.PNG
 

LifeMCServer

Nether Yerlisi
Mesajlar
2,410
En iyi cevaplar
98
Beğeniler
2,461
Puanları
10,250
Ruh hali
JRE yerine JDK kullanırsanız sorun çözülecektir derken nasıl kullanıcağım JDK yı ve -server kısmını sildim ama hala hata alıyorum şöyle
Ekli dosyayı görüntüle 138375

Bu sefer de UseCompressedOops argümanı problem vermiş. JDK 8 kullandığınıza emin olun. Argümanı silmeyi deneyebilirsiniz. Hata veren argümanları sildiğinizde çalışmaya başlayacaktır. İstek gelirse belki konuya sadece UTF-8 düzeltmeleri içeren, optimizasyonsuz bir kod da ekleyebilirim.

Argümanı sildikten sonra hata vermeye devam eder ise JDK 8 kurabilirsiniz. Muhtemelen java.com'dan indirdiğiniz JRE 8 ile kullanmayı denediğiniz için veya Java 7 kullandığınız için hata alıyorsunuz.

JDK 8 indirebileceğiniz yerler:

Java SE Development Kit 8 - Downloads
(Oracle üyeliği gerektirir. Kişisel veya geliştirme amaçlı kullanım için ücretsiz Java/JDK dağıtımı.)

AdoptOpenJDK
(Herhangi bir üyelik gerektirmez. Açık kaynak kodlu ve ücretsiz. Kurulum Oracle'de kine göre biraz daha zor. Kurarken JAVA_HOME ile ilgili olan seçeneği seçtiğinize emin olun yoksa java komutu çalışmayabilir.)
 

LifeMCServer

Nether Yerlisi
Mesajlar
2,410
En iyi cevaplar
98
Beğeniler
2,461
Puanları
10,250
Ruh hali
YENİ!
V2.0 BETA


UYARI:
Bu mesaj eski, V2.0 beta artık ayrı bir kaynak, aşağıdan ulaşabilirsiniz:
Minecraft Sunucu Başlatma Dosyası | Türkçe Karakter Destekli, Optimizeli!

- Geri bildirim yapınız -


Bash:
@echo off

:: Bu kismi ellemeniz onerilmez

@setlocal enableextensions enabledelayedexpansion
@cd /d "%-dp0"

:: Ayarlar - kendinize gore duzenleyebilirsiniz

:: Sunucunuzun ana JAR dosyasının adı - spigot, craftbukkit, paper vb. olabilir
set jar_name=craftbukkit

:: Sunucunuzun surumu - 1.8.8, 1.9.4, 1.10.2, 1.11.2, 1.12.2, 1.13.2 veya 1.14.4 olabilir
:: Not: Sadece yukarida belirtilen sunucu JAR dosyasi yok ise calisir.
set game_version=1.8.8

:: Eger konsolun renkli olmasini istemiyor iseniz false yapabilirsiniz
set konsol_renkleri=true

:: Sunucunun kullanacagi minimum ram miktari (MB icin M, GB icin G kullanin)
set min_ram=1536M

:: Sunucunun kullanacagi maximum ram miktari (MB icin M, GB icin G kullanin)
set max_ram=1536M

:: Kod onbellegi boyutu, 256M onerilir (MB icin M, GB icin G kullanin)
set code_cache=256M

:: Sunucu kapandiktan sonra loglar temizlensin mi?
set log_temizle=true

:: Sunucu kapandiktan ne kadar sonra yeniden baslatilsin? (saniye)
set delay=5

:: Eger herhangi bir kullanici arayuzu gerektiren plugin vs. kullaniyor iseniz false yapin
set head_less=true

:: Eger sunucunuzda cok timeout/disconnected sorunu yasiyorsaniz arttirabilirsiniz
set io_timeout=60

:: Eger sunucunuza sadece premium sahibi kisilerin girmesini istiyorsaniz true yapin
set online_mode=false

:: Eger dunya ayarlarini baslangicta konsola yazdirmasini istiyorsaniz true yapin
set verbose=false

:: Gelismis Ayarlar - duzenlemeniz pek onerilmez

:: Eger sunucu JAR dosyasi yok ise, otomatik olarak bu linkten indirilir
set download_url=https://papermc.io/api/v1/paper/%game_version%/latest/download

:: Spigot konfigurasyon dosyasinin adi (uzanti dahil)
set spigot_config=spigot.yml

:: Paper konfigurasyon dosyasinin adi (uzanti dahil)
set paper_config=paper.yml

:: Mesajlar - kendinize gore duzenleyebilirsiniz

:: Pencere basligi
set title=Sunucu Konsolu

:: Diger mesajlar
set baslatiliyor=Sunucu baslatiliyor...
set dosya_indiriliyor=Sunucu dosyasi indiriliyor...

set temizlik_yapiliyor=Temizlik yapiliyor...
set yeniden_baslatiliyor=Sunucu yeniden baslatiliyor...

:: Kod kismi - duzenlemeniz onerilmez.

chcp 65001 > nul
title %title%

set unblocked=false

:start
call echo %baslatiliyor%

if %max_ram% lss %min_ram% call set max_ram=%min_ram%

if %code_cache% gtr %max_ram% call set code_cache=%max_ram%
if %code_cache% lss 0 call set code_cache=%min_ram%

call set additional_parameters=
if %konsol_renkleri% equ false call set additional_parameters= -nojline

if not exist %jar_name%.jar (
call echo %dosya_indiriliyor%
call powershell -command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::TLS12; (New-Object Net.WebClient).DownloadFile('%download_url%', '%jar_name%.jar')"
)

call echo eula=true> eula.txt

if exist %spigot_config% call find "verbose: true" %spigot_config% 1> nul
if exist %spigot_config% if %errorlevel% equ 1 if %verbose% equ false call powershell -command "(gc spigot.yml) -replace 'verbose: true', 'verbose: false' | Out-File -encoding UTF8 spigot.yml"

if exist %paper_config% call find "verbose: true" %paper_config% 1> nul
if exist %paper_config% if %errorlevel% equ 1 if %verbose% equ false call powershell -command "(gc paper.yml) -replace 'verbose: true', 'verbose: false' | Out-File -encoding UTF8 paper.yml"

if %unblocked% equ false (
call powershell -command "Start-Job -ScriptBlock { Get-ChildItem -Recurse | Unblock-File }" 1> nul
call set unblocked=true
)

call java -XX:+UnlockExperimentalVMOptions -XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle -Xaggressive -Xshare:on -Xshareclasses -d64 -server -Xms%min_ram% -Xmx%max_ram% -XX:ReservedCodeCacheSize=%code_cache% -XX:UseSSE=4 -XX:+UseGCOverheadLimit -XX:+MaxFDLimit -XX:+RelaxAccessControlCheck -XX:+UseThreadPriorities -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe -XX:+TieredCompilation -XX:+UseLWPSynchronization -XX:+UseBiasedLocking -XX:+UseFastAccessorMethods -XX:+CMSIncrementalPacing -XX:+CMSParallelRemarkEnabled -XX:+UseCMSInitiatingOccupancyOnly -XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark -XX:+CMSClassUnloadingEnabled -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:+OmitStackTraceInFastThrow -XX:-AggressiveOpts -XX:+DisableExplicitGC -XX:+UseGCStartupHints -XX:+ShareAnonymousClasses -Dcom.ibm.enableClassCaching=true -XX+JITInlineWatches -XX+TransparentHugePage -Dsun.io.useCanonPrefixCache=false -Djava.net.preferIPv4Stack=true -Dsun.net.http.errorstream.enableBuffering=true -Dsun.net.client.defaultConnectTimeout=5000 -Dsun.net.client.defaultReadTimeout=5000 -Dskript.dontUseNamesForSerialization=true -Djava.net.preferIPv4Stack=true -Djdk.http.auth.tunneling.disabledSchemes="" -Djdk.attach.allowAttachSelf -Dkotlinx.coroutines.debug=off -Djava.awt.headless=%head_less% -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 -Duser.timezone=Asia/Istanbul -Dpaper.playerconnection.keepalive=%io_timeout% -Dlog4j.skipJansi=true -Dusing.flags.lifemcserver.com=true -Djansi.force=true -Dansi.force=true -Dlibrary.jansi.version=%jar_name% -jar %jar_name%.jar "-o %online_mode% --log-append=false --log-strip-color nogui%additional_parameters%"

call echo %temizlik_yapiliyor%

if %log_temizle% equ true call del logs\*.* /q 2> nul
call del plugins\NoCheatPlus\*.log /q 2> nul
call del plugins\NoCheatPlus\*.lck /q 2> nul
call del plugins\NoCheatPlus\*.log.* /q 2> nul
call del plugins\AuthMe\authme.log /q 2> nul
call del plugins\bStats\temp.txt /q 2> nul
call del plugins\AntiAura\logs\*.* /q 2> nul

call echo %yeniden_baslatiliyor%
call timeout %delay% 2> nul

call goto start

GERİ BİLDİRİM YAPIN!
Bir süredir test ettiğim yeni optimize edilmiş, UTF-8 ve türkçe karakter sorunlarından arındırılmış, ayarlamaları kolayca yapabileceğiniz, logları otomatik silebilme ayarı da olan, dosyaların bloğunu kaldırma, başlangıçta çıkan gereksiz mesajları kapatma, sunucu JAR dosyası yok ise otomatik indirme gibi birçok özelliği bulunan yeni başlatma scriptimi sizlerle paylaşmak istedim.

Yakın zamanda bu script'in linux versiyonunu da CentOS için yapacağım. Onun için de bu konuyu takipte kalabilirsiniz. Bu şimdilik Windows kullananların işine yarayacaktır.

Değiştirmeniz gereken bir ayar yok aslında. Bu sefer varsayılanlar gayet iyi. Sadece eğer 1,5GB'dan az RAM'iniz var ise onu değiştirmeniz gerekebilir. Fakat yine de emin olmak için JAR dosyasının adını değiştirin baştan.


Konu başlığımızda dendiği gibi "geri bildirim yapın", nelerin eklenmesini istiyorsunuz, yaşadığınız sorunlar neler, vesaire vesaire, bunlar kodu geliştirmem için önemli.

Keyifli kullanımlar!​
 
Son düzenleme:

mustibey0763

Sudan Çıkmış
Mesajlar
4
En iyi cevaplar
0
Beğeniler
0
Puanları
20
kodda -server var iken

Sunucu aciliyor... Unrecognized option: -server.jar Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. Sunucu kapandi. Yeniden baslatilmasini istemiyor iseniz pencereyi kapatin. Gunluk temizlik baslatiliyor.. Dosyalar siliniyor... The system cannot find the file specified. The system cannot find the file specified. The system cannot find the file specified. The system cannot find the path specified. The system cannot find the path specified. The system cannot find the path specified. Dosya silme basarili, sunucu yeniden baslatiliyor..

böyle bir hata ile karşılaşıyorum

kodda -server yok iken

Invalid maximum heap size: -Xmx16G The specified size exceeds the maximum representable size. Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. Sunucu kapandi. Yeniden baslatilmasini istemiyor iseniz pencereyi kapatin. Gunluk temizlik baslatiliyor.. Dosyalar siliniyor... The system cannot find the file specified. The system cannot find the file specified. The system cannot find the file specified. The system cannot find the path specified. The system cannot find the path specified. The system cannot find the path specified. Dosya silme basarili, sunucu yeniden baslatiliyor..

böyle bir hata alıyorum
anladığım kadarıyla maximum kullanım sınırını aştınız vs. bişi diyor
sunucuya 16 gb vermek istiyorum
makinem 64gb
yardımcı olabilir misin?
@LifeMCServer
şimdiden teşekkürler.

en son kullandığım kod:

@Echo off
title Sunucu Yonetim Kontrol Paneli
:start
echo Sunucu aciliyor...
java -XX:+UnlockExperimentalVMOptions -Xms256M -Xmx16G -XX:-HeapDumpOnOutOfMemoryError -XX:SoftRefLRUPolicyMSPerMB=1000 -XX:-UseCompressedOops -XX:+TieredCompilation -XX:+UseLWPSynchronization -XX:+UseBiasedLocking -XX:+UseFastAccessorMethods -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -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 server.jar -nojline -o false --log-append=false --log-strip-color=true 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 Dosya silme basarili, sunucu yeniden baslatiliyor..
timeout 5 > nul
goto start
 

ColonyNetwork

Ağaç Yumruklayıcı
Mesajlar
24
En iyi cevaplar
0
Beğeniler
3
Puanları
40
Ruh hali
V2.X BETA
Yeni recode sürümü çıktı!
Buraya tıklayarak yeni sürümün kaynak sayfasına gidebilirsiniz.

Merhabalar
Bu konumda sizlere uzun süre test edip kullandığım ve birçok tecrübe edinerek geliştirdiğim optimize edilmiş başlatma kodunu tanıtıp paylaşacağı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
- Özel CMD penceresi başlığı.
- Bilgilendirici echo mesajları.
- Tamamen optimize edilmiş java argümanları.
- Otomatik bazı gereksiz dosyaları temizler.
- Sunucu çökünce / kapanınca otomatik reset atma (tekrar açma) fonksiyonu.

Uyumluluk
Java 8 / JDK 8 gerektirir. JDK 8 üstünde (örn. JDK 11) çalıştırmak istiyor iseniz bazı kodlar silindiği, deprecated edildiği veya değiştirildiği için kaldırmanız, değiştirmeniz gerekebilir. Yazılım bilginiz yok ise ve ille de JDK 11 kullanmak istiyor iseniz yoruma aldığınız hatayı yazabilirsiniz.

Kodumuz
Bash:
@echo off
title Sunucu Yonetim Kontrol Paneli
:start
echo Sunucu aciliyor...
java -XX:+UnlockExperimentalVMOptions -server -Xms256M -Xmx3G -XX:-HeapDumpOnOutOfMemoryError -XX:SoftRefLRUPolicyMSPerMB=1000 -XX:-UseCompressedOops -XX:+TieredCompilation -XX:+UseLWPSynchronization -XX:+UseBiasedLocking -XX:+UseFastAccessorMethods -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -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-append=false --log-strip-color=true 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 Dosya silme basarili, sunucu yeniden baslatiliyor..
timeout 5 > nul
goto start


Değiştirmeniz Gerekenler
İlk olarak maksimum RAM miktarını değiştirmelisiniz. -Xmx3G 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.

İkinci olarak -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.

Daha sonrasında herhangi bir şey değiştirmenize gerek yok fakat okumaya devam etmenizi tavsiye ederim.


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..
Gayet güzel ve bilgilendirici olmuş! Sunucu sahipleri olarak çok beğendik
 

LifeMCServer

Nether Yerlisi
Mesajlar
2,410
En iyi cevaplar
98
Beğeniler
2,461
Puanları
10,250
Ruh hali
kodda -server var iken

Sunucu aciliyor... Unrecognized option: -server.jar Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. Sunucu kapandi. Yeniden baslatilmasini istemiyor iseniz pencereyi kapatin. Gunluk temizlik baslatiliyor.. Dosyalar siliniyor... The system cannot find the file specified. The system cannot find the file specified. The system cannot find the file specified. The system cannot find the path specified. The system cannot find the path specified. The system cannot find the path specified. Dosya silme basarili, sunucu yeniden baslatiliyor..

böyle bir hata ile karşılaşıyorum

kodda -server yok iken

Invalid maximum heap size: -Xmx16G The specified size exceeds the maximum representable size. Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. Sunucu kapandi. Yeniden baslatilmasini istemiyor iseniz pencereyi kapatin. Gunluk temizlik baslatiliyor.. Dosyalar siliniyor... The system cannot find the file specified. The system cannot find the file specified. The system cannot find the file specified. The system cannot find the path specified. The system cannot find the path specified. The system cannot find the path specified. Dosya silme basarili, sunucu yeniden baslatiliyor..

böyle bir hata alıyorum
anladığım kadarıyla maximum kullanım sınırını aştınız vs. bişi diyor
sunucuya 16 gb vermek istiyorum
makinem 64gb
yardımcı olabilir misin?
@LifeMCServer
şimdiden teşekkürler.

en son kullandığım kod:

@Echo off
title Sunucu Yonetim Kontrol Paneli
:start
echo Sunucu aciliyor...
java -XX:+UnlockExperimentalVMOptions -Xms256M -Xmx16G -XX:-HeapDumpOnOutOfMemoryError -XX:SoftRefLRUPolicyMSPerMB=1000 -XX:-UseCompressedOops -XX:+TieredCompilation -XX:+UseLWPSynchronization -XX:+UseBiasedLocking -XX:+UseFastAccessorMethods -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -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 server.jar -nojline -o false --log-append=false --log-strip-color=true 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 Dosya silme basarili, sunucu yeniden baslatiliyor..
timeout 5 > nul
goto start

İlk hata için baştaki -server.jar kısmını -server yapın, .jar'ı en sondaki kısma (-jar server.jar) ekleyeceksiniz. Değiştir yaptığınızdan o şekilde olmuş sanırım. Bunun dışında makineniz 32 bit ise veya javanız 32-bit ise verebileceğiniz ram sınırı 2gb olur, eğer 64 bit ise de makinenizde boşta 16gb ram bulunduğundan emin olun.
 

Üst