Sunucularda Linux'mu Windows'mu Kullanılmalı? (+ OpenJ9, Paper, DNS)

LifeMCServer

Nether Yerlisi
Mesajlar
2,410
En iyi cevaplar
98
Beğeniler
2,461
Puanları
10,250
Ruh hali
Linux vs Windows

Kısa cevap: Linux
(ve OpenJ9 & Paper)

Uzun Cevap

Eğer Windows'a alıştıysanız ve bilmiyorsanız sunucunuzu direk Linux'a geçirmenizi tabii ki önermem fakat yine de denemeden zaten alışamazsınız, öğrenemezsiniz. Ekstra olarak sunucunuzda tabii ki (eğer ille de Windows kullanacaksanız) Windows yerine Windows Server kullanmalısınız, buradaki Windows onun için yaptığım kısaltma, sonuçta ikisi de Windows, sadece Server olan daha çok sunucu odaklı.

Linux'un Artıları

- Açık kaynak kodlu ve ücretsiz (dağıtımınıza göre değişebilir)
- İçerisinde Windows'da ki gibi yüzlerce gereksiz izleme aracı, servis, antivirüs adı altında kendisi virüs olup CPU'yu sömüren işlem yok.

- Netty Native Transport: IOException ve Time out tarzı hatalara son. Paketleriniz daha hızlı olacak ve GC'ye takılmayacak.
- IPTables: Bot saldırısı gibi sorunlar için kendi ayarlarınızı yapabileceğiniz gelişmiş güvenlik duvarı.

- Kendiliğinden FTP: Linux kendiliğinden varsayılan olarak SFTP içermekte, yani FTP sunucusu kurmanıza gerek yok. Makinenizin normal şifresi ve kullanıcı adı ile 22 portundan girebiliyorsunuz.

- RDP Brute Force Saldırıları Yok: Windows sunucularda eğer IP adresiniz yaygın ise veya paylaşımlı bir hostingde iseniz risk altındasınız, uzak masaüstünüze sürekli giriş istekleri yollayarak şifrenizi bulabilirler. Bunun dışında sizden habersiz sistemdeki Administrator hesabına giriş / çıkış yapılabilir. Kısaca Linux, hem güvenlik, hem performans olarak Windows'dan öndedir.

Linux'a geçmek için hostinginize bilgi verebilirsiniz. Ekstra olarak veri merkezi ve işlemci kalitesi nedeniyle almanya lokasyon sunucular öneririm. Eğer türkiye lokasyon i7 / i9 sunucular ile hem ping hem performans istiyor iseniz hosting olarak Keyubu önerebilirim.

Netty Native Transport

Bu, sunucularda paket ile istemci ve sunucu arasındaki iletişim için kullanılan Netty Java kütüphanesinin performans kritiği kısımlarının Java yerine direk C programlama dili ile yazılmış olan Native kütüphanesidir. Sadece Linux ve MacOS'da çalışıyor diye hatırlıyorum. Sunucu konsolunuzda eğer "Using default channel type" görüyorsanız işletim sisteminiz Netty Native Transport desteklemiyordur.

Netty Native Transport varsayılan olarak açık gelir ve Minecraft 1.8.8 veya herhangi bir daha üst sürümde çalışacaktır. Eğer işletim sisteminiz desteklemiyor ise açık olsa bile bir efekti olmayacaktır. Eğer konsolunuzda veya log dosyalarınızda "Using epoll channel type" gördüyseniz o zaman sunucu sürümünüz ve işletim sisteminiz Netty Native Transport destekliyordur ve Netty Native Transport açıktır.

Peki bunun artısı ne?

Java genel olarak C'ye yakın ve hatta (optimizesiz kodlanmış bir C koduna göre) daha iyi bir performans verebilir. Fakat gecikmeye sebep olan şey aslında RAM almak değildir; alınan RAM'i boşaltmaktır. Java'da objeleri silemezsiniz; GC otomatik olarak çalışır, referansları kaydeder, analiz eder ve gereksiz objeleri siler.

Bu genel olarak şöyle geçer: "Lower from performance to increase programmer productivity"
Yani Java ile daha hızlı ve modern kodlarsınız, fakat eğer performans kritiği bir şeyler yapıyor iseniz, Java bunun için pekte doğru bir dil değil.

Her neyse, kısaca Netty Native Transport, Netty'nin optimizeli C ile yazılmış bir versiyonu. Sunucunuzda IOException, Disconnected, Timeout tarzı mesajlar ile oyuncularınız sürekli kick yiyorsa Netty Native Transport kullanan bir işletim sistemine geçmenizin artısı olabilir.

OracleJDK vs OpenJDK vs OpenJ9

Aslında bu konuyla pek alakası yok fakat Linux'a geçtiğinizde sunucunuzu aktarmak için yapacağınız ilk işlemin Java yüklemek olduğunu varsayarsak (eğer dağıtımınıza göre zaten yüklü gelmiyorsa) hangi Java dağıtımını yükleyeceğiniz de diğer bir önemli nokta.

Windows'da biliyoruz ki hepiniz Oracle'nin sitesinden veya java.com üzerinden Java 8 yüklüyorsunuz. Fakat Oracle'den yüklediğiniz bu Java sürümleri açık kaynak kodlu değil ve normalde ücretli olarak alınıyor, sadece geliştirme amaçlı olarak dağıtılıyor.

Bu yüzden Linux'da OracleJDK yerine OpenJDK kullanmalısınız. Aralarında zaten neredeyse hiç fark yok. Fakat bir diğer başlığımız ise OpenJDK vs OpenJ9.

OpenJ9

OpenJ9, Eclipse Foundation tarafından geliştirilen açık kaynak kodlu, OpenJDK bazlı bir Oracle HotSpot VM alternatifi, OpenJ9 VM olarak da geçer. Eskiden IBM tarafından geliştiriliyormuş fakat şuanda Eclipse geliştiriyor.

OracleJDK ve OpenJDK'ya göre daha iyi varsayılanları ve performansı olduğunu iddia ediyor; ki testlerime göre de öyle. Bu yüzden size OpenJ9 tavsiye ediyorum çünkü büyük bir performans artışı sağlıyor.

Tabii ki OpenJ9'u sadece Linux'da kullanabilirsiniz diye bir şey yok; Windows'da da kullanabilirsiniz.
Fakat yine de sırf Netty Native Transport için bile Linux'a geçmenizi öneririm.

OpenJ9: OpenJ9

Hangi Java Sürümü?

Bunu daha farklı bir konu olarak yakında açacağım fakat MC sürümünüze göre Java sürümlerini size şu şekilde önerebilirim:

MC <= 1.12.2: Java 8
(MC 1.12.2 altının Java 9+ desteklediğini bile sanmıyorum)

MC 1.13.2: Java 11
(Eklentilerinizin uyumlu olduğunu varsayarsak)

MC 1.14.4: Java 12
(Eklentilerinizin uyumlu olduğunu varsayarsak)

MC 1.13.2'de de Java 12 kullanabilirsiniz, 1.12.2'de de Java 11 kullanabilirsiniz, vesaire. Fakat bunlar sadece benim önerilerimdir. Java 11 LTS olduğu için ve MC 1.14.4'de çok yeni olduğu için 1.13.2'de Java 11, 1.14.4'de ise 12 öneririm.

Yine de size tavsiyem sadece Java 8 ve Java 11 gibi LTS sürümlerini, Linux ve OpenJ9 ile birlikte kullanmanız. "Her şey tamam, peki sunucu yazılımı ne olacak?" diyorsunuz sanırım, evet, hemen ona da geçelim.

Sunucu Yazılımı

Şu konuda bunlardan biraz bahsetmiştim. Tarihsel ve detaylı bilgi için ona bakabilirsiniz. Bu konu sadece tavsiye konusu olduğu için direk size hangisini önerdiğime geçeceğim. Sizlere önerim Paper ve bazı eski sürümler için onun bazı eski varyasyonları.

Paper eskiden biliyorsunuz ki PaperSpigot olarak geçiyordu. Fakat daha sonrasında Spigot kısmı kaldırıldı ve artık direk Paper olarak geçiyor.
Biliyorsunuz ki Paper'ın bir de forkları var; en bilinen birtanesi Taco diye geçen TacoSpigot. Bu biraz eski fakat MC 1.8.8 için hala güncel bir paper altyapısı içerdiğinden, MC 1.8.8 için TacoSpigot'u öneriyorum.

MC 1.12.2 ve üstünde ise TacoSpigot kullanmanızı önermem çünkü kullandığı Paper altyapısı eski. Son güncellenen 1.12.2 ve 1.13.2 (+ 1.14 ve üstü sürümler dahil) sürümleri için PaperMC sitesini ziyaret edebilirsiniz.

Unutmayın ki 1.12.2 altı sürümler son gelen performans güncellemelerini, yeni gelen bir ton ayarı içermiyor ve sadece güvenlik açıkları çözülüyor.
Eğer PvP'yi sevmiyor iseniz belli eklentiler ile PvP cooldown'ununu kaldırabilir veya PvP güncellemesi olacağı söylenen Minecraft 1.15'i bekleyebilirsiniz.

Ekstra:
CloudFlare DNS ve Zaman Sunucusu


Ekstra olarak sunucu makinenizde ve kendi sunucunuzda DNS sunucusu olarak CloudFlare DNS ve Zaman Sunucusu'nu kullanabilirsiniz. Performans veya herhangi bir şey ile alakası pek yok - ISP'nizin normal DNS'sine göre daha hızlı olup Google DNS'ye göre de hafif daha hızlı olması dışında - fakat yine de belirtmek istiyorum.

CloudFlare DNS ve Zaman Sunucusunu bende aktif olarak kullanıyorum ve memnunum. Daha fazla bilgi için aşağıdaki linkleri ziyaret edebilirsiniz, eminim sorularınızı cevaplayacaktır.

CloudFlare DNS: 1.1.1.1 — the Internet’s Fastest, Privacy-First DNS Resolver
(Virüs değildir, 1.1.1.1, doğru duydunuz!)

Zaman Sunucusu: Cloudflare Time Services | Cloudflare
(Bu henüz pek bilinmiyor ama yine de tavsiye ederim)​
 


Son düzenleme:

LifeMCServer

Nether Yerlisi
Mesajlar
2,410
En iyi cevaplar
98
Beğeniler
2,461
Puanları
10,250
Ruh hali
Konuya kendiliğinden ftp (sftp) ve rdp brute force saldırıları hakkında ufak açıklamalar eklendi. Linux'un artıları kısmından okuyabilirsiniz.
 

kutaysadf

Sudan Çıkmış
Mesajlar
5
En iyi cevaplar
0
Beğeniler
0
Puanları
80
Linuxun böyle bir oyunun sektöründe çok optimize olduğunu düşünmüyorum. Güzel konu teşekkürler.
 

Üst