Ekran Kartlı Sunucu Satışları Başladı. İncele
Minecraft Hata Çözümleri

Minecraft io.netty Hataları ve Çözüm Yolları

io.netty.handler.timeout.ReadTimeoutException ve diğer netty hatalarının anlamı, sunucu ve istemci tarafı çözümleri detaylı anlatıldı.

  • 6 dk okuma
  • Güncelleme:
  • Yayın:
  • Batihost Teknik Ekibi

Kısaca Özet

  • Netty, Minecraft’ın ağ katmanını yürüten kütüphanedir. io.netty ile başlayan her hata bir ağ katmanı olayıdır, oyun mantığı hatası değildir.
  • En sık dört varyant: ReadTimeoutException (30 sn cevapsızlık), DecoderException (bozuk paket), AnnotatedConnectException (bağlantı kurulamadı), TooLongFrameException (aşırı büyük paket).
  • Sunucu tarafında çözüm sırası: log okuma → tick süreleri ve GC → network-compression-threshold → proxy yapılandırması → eklenti eleme.
  • Netty hataları çoğu zaman gerçek nedenin habercisidir: sunucu donuyorsa timeout, eklenti bozuksa decoder, proxy yanlışsa compression hatası görürsünüz.

io.netty hataları, Minecraft sunucusunun ağ katmanını yürüten Netty kütüphanesinden gelir ve hepsi tek bir şeyi anlatır: istemciyle sunucu arasındaki paket akışında bir sorun oluştu. Bu hataların hiçbiri oyun mantığıyla ilgili değildir; bu yüzden eklenti kurmak ya da dünyayı sıfırlamak çözüm getirmez. Doğru yaklaşım, hata sınıfının adını okuyup hangi katmanda tıkanma olduğunu belirlemektir.

Aşağıda en sık görülen dört Netty istisnasını, birebir metinlerini, hangi durumda ortaya çıktıklarını ve her biri için uygulanabilir çözümleri bulacaksınız. İçerik Minecraft 26.2 (protokol 776) dönemine göre yazıldı.

Hataların Birebir Metinleri#

io.netty.handler.timeout.ReadTimeoutException: null

io.netty.handler.codec.DecoderException: java.lang.IndexOutOfBoundsException:
readerIndex(12) + length(4) exceeds writerIndex(13)

io.netty.channel.AbstractChannel$AnnotatedConnectException:
Connection refused: no further information

io.netty.handler.codec.TooLongFrameException: Length 4194304 is larger than threshold 2097152

Sunucu logunda tipik bir kayıt şuna benzer:

[03:12:44] [Netty Server IO #2/ERROR]: io.netty.handler.codec.DecoderException:
	io.netty.handler.codec.CorruptedFrameException: Badly compressed packet
	at io.netty.handler.codec.ByteToMessageDecoder.decode(ByteToMessageDecoder.java:519)
[03:12:44] [Server thread/INFO]: oyuncuadi lost connection: Internal Exception: io.netty.handler.codec.DecoderException
BilgiNetty hataları Netty Server IO veya Netty Epoll Server IO etiketli iş parçacıklarında basılır. Bu etiket, hatanın ana tick thread’inde değil ağ katmanında oluştuğunun kesin işaretidir.

Netty İstisnaları Teşhis Tablosu#

İstisnaAnlamıEn sık nedeniBakılacak yer
ReadTimeoutException30 sn boyunca paket gelmediSunucu tick’te kilitlendi ya da istemci bağlantısı koptuTPS, GC logu
DecoderExceptionPaket çözümlenemediSürüm uyuşmazlığı, çift sıkıştırma, bozuk eklentiProtokol sürümü, proxy ayarı
CorruptedFrameExceptionPaket çerçevesi bozukSıkıştırma eşiği çakışmasınetwork-compression-threshold
AnnotatedConnectExceptionBağlantı hiç kurulamadıPort kapalı, süreç çalışmıyorConnection refused sayfası
TooLongFrameExceptionPaket boyut sınırını aştıDevasa NBT verisi, kötü niyetli paketOyuncu envanteri, anti-cheat
NativeIoExceptionEpoll seviyesinde IO hatasıBağlantı zorla kapatıldıAğ yolu, DDoS filtresi
OutOfDirectMemoryErrorNetty doğrudan bellek havuzu dolduÇok fazla eşzamanlı bağlantı veya bellek sızıntısı-XX:MaxDirectMemorySize, eklenti eleme
io.netty istisnalarının anlamları ve teşhis noktaları

ReadTimeoutException: En Sık Görülen Varyant#

Bu istisna, Netty’nin ReadTimeoutHandler bileşeni tarafından atılır ve varsayılan eşik 30 saniyedir. Minecraft sunucusu her 15 saniyede bir keep-alive paketi gönderir; iki keep-alive üst üste cevapsız kalırsa bağlantı kesilir.

Sunucu tarafında görünüyorsa#

İstemci cevap vermemiştir. Tek bir oyuncuda tekrarlıyorsa o kişinin bağlantısı sorunludur. Aynı anda birden fazla oyuncuda görülüyorsa sunucu o saniyelerde donmuştur ve keep-alive’lara cevap verememiştir.

İstemci tarafında görünüyorsa#

Sunucu cevap vermemiştir. Bu neredeyse her zaman bir performans sorunudur. Kontrol edilecek üç şey vardır:

# Tick durumu
/tps
/spark tps

# GC duraklamalarını görmek için başlatma bayrağı ekleyin
-Xlog:gc*:file=logs/gc.log:time,uptime:filecount=5,filesize=10M

GC logunda 1 saniyeden uzun duraklamalar varsa neden bulunmuştur. 8–12 GB heap aralığında G1GC ve Aikar’s Flags kombinasyonu hâlâ en güvenli tercihtir:

java -Xms10G -Xmx10G \
 -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 \
 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch \
 -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M \
 -XX:G1ReservePercent=20 -XX:InitiatingHeapOccupancyPercent=15 \
 -jar paper.jar nogui
Dikkat26.1 ile gelen “G1GC yerine ZGC” değişikliği istemci tarafı bir düzenlemedir; Minecraft Launcher’ın JVM varsayılanını değiştirir. Sunucu jar’ının launcher’ı yoktur, çöp toplayıcıyı tamamen sizin verdiğiniz bayraklar belirler. Java 25’te G1 hâlâ JVM’in genel varsayılanıdır; bayraksız çalıştırılan bir 26.x sunucusu ZGC değil G1GC kullanır.

16 GB ve üzeri heap ile ağır modlu sunucularda ZGC değerlendirilebilir. Doğru kullanım yalnızca -XX:+UseZGC biçimindedir; -XX:+ZGenerational bayrağı Java 25’te obsolete olmuştur.

DecoderException ve Sıkıştırma Sorunları#

Paket çözümleme hataları en sık proxy’li kurulumlarda görülür. Velocity veya BungeeCord arkasında çalışan alt sunucularda sıkıştırma iki kez uygulanırsa çerçeve bozulur.

  1. Alt sunucularda sıkıştırmayı kapatın#

    network-compression-threshold=-1
    online-mode=false
    enable-status=false

    Sıkıştırma yalnızca proxy üzerinde kalsın. Proxy ile alt sunucular aynı yerel ağda olduğu için sıkıştırmanın faydası da zaten yoktur.

  2. Velocity tarafında forwarding modunu doğrulayın#

    # velocity.toml
    player-info-forwarding-mode = "modern"
    forwarding-secret-file = "forwarding.secret"
    compression-threshold = 256
    compression-level = -1

    Alt sunucularda Paper kullanıyorsanız config/paper-global.yml içinde modern forwarding etkinleştirilmelidir. Yapılandırma adımları proxy kurulum sayfasında anlatıldı.

  3. Protokol sürümlerini karşılaştırın#

    26.2 protokol 776, 26.1 protokol 775 kullanır. Proxy’nin desteklediği aralığın dışına çıkan bir alt sunucu decoder hatası üretir. Sürüm uyuşmazlığı belirtileri için Outdated server/client sayfasına bakın.

  4. Eklentileri ikili aramayla eleyin#

    plugins klasöründeki eklentileri yarıya bölün, sunucuyu başlatın, hatanın devam edip etmediğine bakın. Beş adımda otuz eklenti arasından suçluyu bulabilirsiniz. Paket akışına dokunan eklentiler önceliklidir.

TooLongFrameException: Devasa Paketler#

Minecraft protokolünde bir paket için üst sınır vardır. Bu sınırın aşılması iki durumda olur: meşru ama aşırı büyük veri (iç içe geçmiş shulker kutuları, binlerce satırlık kitap, dev harita verisi) ya da kötü niyetli paket gönderimi.

[22:41:09] [Netty Server IO #1/ERROR]: io.netty.handler.codec.TooLongFrameException:
	Length 4194304 is larger than threshold 2097152

Paper tarafında bu tip paketleri sınırlayan ayarlar bulunur:

# config/paper-global.yml
misc:
  max-joins-per-tick: 3
packet-limiter:
  all-packets:
    interval: 7.0
    max-packet-rate: 500.0
  overrides:
    ServerboundPlaceRecipePacket:
      interval: 4.0
      max-packet-rate: 5.0
      action: DROP
UyarıSürekli TooLongFrameException alıyorsanız ve tek bir oyuncudan kaynaklanıyorsa bu bir sunucu çökertme denemesi olabilir. İlgili oyuncuyu geçici olarak engelleyin ve anticheat eklentileri sayfasındaki paket sınırlama önerilerini uygulayın.

OutOfDirectMemoryError: Netty Bellek Havuzu#

Netty, JVM heap’i dışında “direct memory” adı verilen ayrı bir bellek alanı kullanır. Bu alan dolduğunda sunucu heap’i boş olsa bile hata verir:

io.netty.util.internal.OutOfDirectMemoryError:
	failed to allocate 16777216 byte(s) of direct memory (used: 1056964608, max: 1073741824)

Çözüm, doğrudan bellek sınırını açıkça belirtmektir. Heap dışında ek bellek ayıracağınız için toplam sistem belleğini hesaba katın:

java -Xms10G -Xmx10G -XX:MaxDirectMemorySize=2G -XX:+UseG1GC -jar paper.jar nogui

Bu hata tekrarlıyorsa altta yatan neden genelde bellek sızıntısıdır: kapanmayan bağlantılar, sürekli açılan kanal nesneleri veya hatalı bir eklenti. Heap dump alıp inceleme yöntemi Out of Memory sayfasında anlatıldı.

Sunucu Tarafı Ağ Ayarları#

AyarDosyaÖnerilen değerAçıklama
network-compression-thresholdserver.properties256 (proxy varsa -1)Bu boyutun üstündeki paketler sıkıştırılır
server-ipserver.propertiesBoşTüm arayüzleri dinler
rate-limitserver.properties00 = sınırsız; düşük değer oyuncu atar
max-joins-per-tickpaper-global.yml3Aynı anda giren oyuncu sayısını sınırlar
use-alternative-keepalivepaper-world-defaults.ymlfalseYalnızca sorun sürüyorsa deneyin
-Dio.netty.leakDetection.levelJVM bayrağısimpleBellek sızıntısı araştırırken kullanılır
Netty ile ilgili sunucu tarafı ayarlar

Teşhis Araçları ve İndirmeler#

İndirmeniz gerekenler
  • spark profilerÖnerilen Paper / Fabric / Forge.jarÜcretsiz
    İndir
  • Paper 26.2 sunucu jar Her platform.jar
    İndir
  • Velocity ProxyKararlı: 4.0.0 Her platform.jar
    İndir
  • Eclipse Temurin JDK 25LTS Windows / Linux.msi / .tar.gz
    İndir

Bağlantılar resmî kaynaklara gider. Üçüncü taraf sitelerden jar indirmeyin. Velocity sayfasında en üstte görünen 4.1.0-SNAPSHOT bir geliştirme sürümüdür; üretimde 4.0.0 kararlı hattını kullanın.

Windows ve Linux Tarafında Hızlı Kontroller#

Bu sayfa işletim sisteminden bağımsızdır. Ağ katmanının sağlığını doğrulamak için:

Get-NetTCPConnection -LocalPort 25565 | Measure-Object
netstat -an | findstr :25565 | find /c "ESTABLISHED"
ss -tn state established '( sport = :25565 )' | wc -l
sudo dmesg | grep -i "nf_conntrack: table full"

İkinci Linux komutu önemlidir: bağlantı izleme tablosu dolduğunda çekirdek yeni bağlantıları sessizce düşürür ve bu Netty tarafında rastgele hatalar üretir. Kurulum ve sistem ayarları ayrıntıları Linux sunucu kurulumu ve Windows sunucu kurulumu sayfalarındadır.

İpucuNetty hatalarının önemli bir bölümü, sunucunun ağı değil işlemcisi yetersiz olduğu için ortaya çıkar. Tick süresi uzadıkça keep-alive gecikir, gecikme timeout’a döner. Yüksek saat hızlı Ryzen tabanlı VDS paketleri bu zinciri baştan kırar.

İlgili Hata Sayfaları#

Özetle#

io.netty hataları ağ katmanının size verdiği geri bildirimdir ve her istisna sınıfı farklı bir yere işaret eder. ReadTimeoutException performans sorununun, DecoderException protokol veya sıkıştırma uyuşmazlığının, TooLongFrameException anormal büyüklükte verinin, OutOfDirectMemoryError ise bellek yönetiminin habercisidir. Çözüm sırası her zaman aynıdır: logdaki istisna adını okuyun, sunucu tick durumunu doğrulayın, proxy varsa sıkıştırmayı tek noktada bırakın, ardından eklentileri ikili aramayla eleyin. Tekrarlayan timeout’larda ağ ayarlarıyla değil, tick süresini kısaltan bir altyapıyla ilgilenmek gerekir.

Sıkça Sorulan Sorular#

io.netty hatası nedir?

io.netty, Minecraft sunucusunun ve istemcisinin ağ iletişimi için kullandığı Netty kütüphanesinin paket adıdır. Bu önekle başlayan tüm hatalar TCP bağlantısı, paket çözümleme veya zaman aşımı ile ilgilidir. Oyunun kendi mantığıyla ilgisi yoktur; hatanın gerçek nedeni genelde sunucu performansında veya ağ yolundadır.

ReadTimeoutException nasıl çözülür?

Bu hata, 30 saniye boyunca karşı taraftan tek bir paket bile gelmediğinde atılır. Sunucu tarafında görüyorsanız istemcinin bağlantısı kopmuştur; istemcide görüyorsanız sunucu tick döngüsünde kilitlenmiştir. Sunucu logunda aynı saniyedeki Can not keep up ve garbage collection uyarılarını kontrol edin.

DecoderException ne anlama gelir?

Netty gelen baytları bir Minecraft paketi olarak çözümleyemedi demektir. Üç yaygın sebebi vardır: protokol sürümü uyuşmazlığı, proxy ile alt sunucu arasında çift sıkıştırma ve paket yapısına müdahale eden bozuk bir eklenti. Mesajın devamındaki readerIndex değerleri hangi noktada takıldığını gösterir.

TooLongFrameException hatası neden olur?

Sunucu, izin verilen boyuttan büyük bir paket almaya çalıştığında bu hatayı verir. Genellikle çok büyük NBT verisi taşıyan bir eşya (aşırı doldurulmuş shulker kutusu, dev bir kitap veya harita) ya da kötü niyetli bir paket gönderimi söz konusudur. İlgili oyuncunun envanterini ve chunk’ını inceleyin.

network-compression-threshold kaç olmalı?

Tek başına çalışan bir sunucuda varsayılan 256 değeri doğrudur. Proxy arkasındaki alt sunucularda paketin iki kez sıkıştırılmasını önlemek için -1 yapılmalı ve sıkıştırma yalnızca proxy üzerinde bırakılmalıdır. Değeri 0 yapmak her paketi sıkıştırır ve CPU maliyetini gereksiz yere artırır.

Netty hataları eklentiden kaynaklanabilir mi?

Evet, özellikle ProtocolLib tabanlı eklentiler, özel tab-list ve scoreboard yazılımları ile anti-cheat çözümleri paket akışına doğrudan müdahale eder. 26.1 unobfuscation sonrası yeniden derlenmemiş bir eklenti yarım paket üretip decoder hatası döktürebilir. Eklentileri ikili aramayla eleyin.

Netty iş parçacığı sayısı ayarlanabilir mi?

Ayarlanabilir ama çoğu sunucuda gereksizdir. JVM parametresi -Dio.netty.eventLoopThreads ile iş parçacığı sayısı belirlenir; varsayılan olarak çekirdek sayısının iki katı kullanılır. Darboğaz neredeyse her zaman ana tick thread’indedir, Netty tarafında değil. Ölçmeden değiştirmeyin.

Minecraft Hata Çözümleri — Tüm Rehberler#

  1. Minecraft Sunucu Hataları ve Çözümleri
  2. Minecraft “Internal Exception” Hatası Çözümü
  3. Minecraft “Connection Refused” Hatası ve Çözümü
  4. Minecraft “Connection Timed Out” Hatası Çözümü
  5. “Outdated Server” ve “Outdated Client” Hatası Çözümü
  6. Minecraft io.netty Hataları ve Çözüm Yolları
  7. Minecraft “Failed to Bind to Port” Hatası Çözümü
  8. Minecraft “Out of Memory” (OutOfMemoryError) Hatası Çözümü
  9. Minecraft “Can’t keep up! Is the server overloaded?” Uyarısı
  10. “Unable to access jarfile server.jar” Hatası Çözümü
  11. Minecraft EULA Hatası: “You need to agree to the EULA”
  12. Minecraft “Invalid Session” Hatası Çözümü
  13. Minecraft Java Sürüm Hatası (UnsupportedClassVersionError)
  14. Minecraft Crash Report Nasıl Okunur?

Bu rehber Batihost teknik ekibi tarafından hazırlanmış ve tarihinde güncellenmiştir. Eksik veya hatalı bulduğunuz bir bilgi varsa bize bildirin.

Başa dön