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

Minecraft “Internal Exception” Hatası Çözümü

Internal Exception: java.io.IOException ve SocketException hatalarının nedenleri: ağ, MTU, sürüm uyuşmazlığı ve sunucu tarafı çözümleri.

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

Kısaca Özet

  • Internal Exception hatası bir oyun hatası değil, ağ katmanı hatasıdır: istemciyle sunucu arasındaki TCP bağlantısı paket tamamlanmadan koptuğunda Netty bu mesajı basar.
  • Tek oyuncuda görülüyorsa kaynak istemci tarafıdır (bağlantı, MTU, VPN, mod). Herkeste aynı anda görülüyorsa sunucu tarafındaki tıkanma, düşük RAM ya da proxy yapılandırması sorumludur.
  • En sık üç neden: java.io.IOException: Connection reset by peer (koparılan bağlantı), SocketException (ağ arayüzü sorunu) ve readerIndex hataları (bozuk paket / sürüm uyuşmazlığı).
  • Sunucu tarafında çözüm sırası: log okuma → RAM ve TPS kontrolü → network-compression-threshold ayarı → proxy ve DDoS filtresi kontrolü. Ayrıntı için hata çözümleri rehberine bakın.

Minecraft Internal Exception hatası, oyunun kendisinden değil, istemciyle sunucu arasındaki ağ bağlantısından kaynaklanır. Oyuncu sunucudan atıldığında ekranda görünen “Internal Exception: java.io.IOException…” satırı, Minecraft’ın kullandığı Netty ağ kütüphanesinin yakaladığı bir istisnanın kullanıcıya gösterilen hâlidir. Yani hata mesajı size ne olduğunu değil, bağlantının koptuğunu söyler; gerçek neden ikinci satırdaki sınıf adında ve sunucu logunda saklıdır.

Bu sayfada hatanın tam metnini, hangi varyantın neye işaret ettiğini, tek oyuncu mu yoksa tüm sunucu mu etkilendiğini nasıl ayırt edeceğinizi ve her senaryo için uygulanabilir çözümleri bulacaksınız. İçerik Minecraft 26.2 “Chaos Cubed” (protokol 776) dönemine göre hazırlandı.

Hatanın Birebir Metni#

Oyuncunun ekranında gördüğü mesaj tipik olarak şu üç biçimden biridir:

Internal Exception: java.io.IOException: An existing connection was forcibly closed by the remote host

Internal Exception: java.io.IOException: Connection reset by peer

Internal Exception: io.netty.handler.codec.DecoderException:
java.lang.IndexOutOfBoundsException: readerIndex(6) + length(1) exceeds writerIndex(6)

Sunucu tarafında aynı olayın karşılığı logs/latest.log içinde şuna benzer:

[21:14:07] [Netty Server IO #3/ERROR]: java.io.IOException: Connection reset by peer
	at sun.nio.ch.SocketDispatcher.read0(Native Method)
	at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:46)
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
[21:14:07] [Server thread/INFO]: oyuncuadi lost connection: Internal Exception: java.io.IOException
BilgiSunucu logundaki lost connection: satırının saatini not edin. Aynı saniyede başka bir uyarı (uzun GC, düşük TPS, disk yazma) varsa neden orada demektir.

Neden Olur? Belirti, Neden ve Çözüm Tablosu#

Internal Exception tek bir hata değil, bir hata ailesidir. Ekrandaki ikinci satır hangi aileye ait olduğunuzu söyler:

Görünen alt mesajOlası nedenİlk yapılacak
Connection reset by peerKarşı taraf bağlantıyı RST ile kesti: istemci kapandı, filtre düşürdü veya sunucu donduSunucu logunda aynı saniyeye bakın; TPS düşüşü var mı?
An existing connection was forcibly closedWindows istemcisinde aynı olayın karşılığı; genelde yerel ağ veya yönlendirici kaynaklıBaşka bir ağdan (mobil veri) test edin
DecoderException: readerIndex …Bozuk veya eksik paket; sürüm/protokol uyuşmazlığı ya da hatalı ViaVersion çevirisiİstemci ve sunucu protokol sürümünü karşılaştırın
SocketException: Network is unreachableSunucunun ağ arayüzü veya IPv6 yapılandırmasıserver-ip satırını boşaltın, IPv4 zorlayın
ReadTimedOutException ile birlikteKeep-alive paketi 30 saniye içinde dönmedi; sunucu tick döngüsü kilitlendiio.netty hataları sayfasına geçin
Badly compressed packetÇift sıkıştırma; proxy ile alt sunucu arasında eşik çakışmasıAlt sunucularda network-compression-threshold=-1
Internal Exception alt mesajlarına göre teşhis tablosu

Birinci Ayrım: Tek Oyuncu mu, Herkes mi?#

Bu sorunun cevabı çözümün yönünü belirler ve iki dakikada alınır. Sunucuya bağlı oyuncu sayısını izleyin; hata bir kişide tekrarlıyorsa istemci tarafındasınız, aynı anda birden fazla kişi düşüyorsa sunucu tarafındasınız.

Tek oyuncu düşüyorsa#

  • Oyuncunun internet bağlantısı veya Wi-Fi kalitesi
  • PPPoE/VPN kaynaklı MTU sorunu
  • İstemci tarafındaki modlar (özellikle ağ paketine dokunanlar)
  • Antivirüs veya güvenlik yazılımının Java bağlantısını kesmesi
  • Oyuncunun bulunduğu chunk’taki aşırı büyük NBT verisi (dolu shulker kutuları, dev harita)

Herkes düşüyorsa#

  • Sunucuda uzun süren garbage collection duraklaması
  • OutOfMemoryError yaklaşımı, heap doluluğu
  • Ana thread’i kilitleyen eklenti veya mod
  • DDoS filtresi veya rate-limit kuralının yanlış tetiklenmesi
  • Proxy (Velocity/BungeeCord) ile alt sunucu arasındaki kopma

Adım Adım Çözüm#

  1. Sunucu logunu doğru satırdan okuyun#

    Sunucu klasöründe logs/latest.log dosyasını açın ve oyuncunun düştüğü saati arayın. Java yığın izinde asıl neden en alttaki Caused by: bloğudur. Yalnızca lost connection satırı varsa ve başka bir hata yoksa neden büyük olasılıkla istemci tarafındadır.

    grep -n "lost connection" logs/latest.log | tail -20

    Windows tarafında aynı iş için PowerShell:

    Select-String -Path .\logs\latest.log -Pattern "lost connection" | Select-Object -Last 20
  2. Sunucunun kendi üzerinden test edin#

    Sunucu makinesinden ya da aynı veri merkezindeki başka bir makineden localhost:25565 adresine bağlanın. Buradan sorunsuz oynayabiliyorsanız sunucu yazılımı sağlamdır ve hata ağ yolundadır. Bağlantı burada da kopuyorsa sorun sunucu sürecinin içindedir.

  3. RAM ve TPS durumunu kontrol edin#

    Konsolda /tps yazın. Değer 20’nin belirgin altındaysa ya da Can not keep up uyarıları akıyorsa sunucu tick’leri kaçırıyor demektir; bu doğrudan bağlantı kopmalarına yol açar. Sunucunuz 8 GB’ın altında bir pakette çalışıyorsa Internal Exception hatalarının kaynağı büyük ihtimalle budur.

    java -Xms10G -Xmx10G -XX:+UseG1GC -XX:+ParallelRefProcEnabled ^
     -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions ^
     -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -jar paper.jar nogui

    Heap değerlerini paketinize göre ayarlayın: 8 GB pakette -Xms6G -Xmx6G, 12 GB pakette -Xms10G -Xmx10G, 16 GB pakette -Xms14G -Xmx14G. Ayrıntılar için RAM ve JVM flag ayarları sayfasına bakın.

  4. server.properties içindeki ağ ayarlarını gözden geçirin#

    server-ip=
    server-port=25565
    network-compression-threshold=256
    prevent-proxy-connections=false
    rate-limit=0

    server-ip satırı boş olmalıdır; buraya yanlış bir adres yazılması sunucunun yalnızca o arayüzü dinlemesine ve bazı bağlantıların düşmesine neden olur. rate-limit değeri 0’dan farklıysa hızlı paket gönderen oyuncular sunucu tarafından kickleniyor olabilir. Tüm anahtarların açıklaması server.properties rehberinde var.

  5. Proxy kullanıyorsanız sıkıştırmayı tek noktada bırakın#

    Velocity veya BungeeCord arkasındaki alt sunucularda paket iki kez sıkıştırılırsa Badly compressed packet ve readerIndex hataları görülür. Alt sunucuların her birinde şu satırı ayarlayın:

    network-compression-threshold=-1
    online-mode=false
    Dikkatonline-mode=false yalnızca alt sunucular dış dünyaya kapalıysa ve proxy üzerinde IP forwarding doğru yapılandırıldıysa güvenlidir. Alt sunucu portlarını güvenlik duvarıyla kapatın; aksi halde herkes istediği isimle girebilir. Kurulum ayrıntıları proxy kurulum sayfasındadır.
  6. MTU sorununu istemci tarafında test edin#

    Sadece belirli oyuncular düşüyorsa ve bu kişiler PPPoE ya da VPN kullanıyorsa MTU parçalanması muhtemeldir. Şu komutla en büyük geçebilen paket boyutu ölçülür:

    ping sunucu-adresiniz.com -f -l 1472

    Yanıt “Packet needs to be fragmented but DF set” ise değeri 1400’e kadar düşürerek deneyin. Geçen en büyük değere 28 ekleyip ağ bağdaştırıcısının MTU değerini o sayıya çekmek gerekir. Linux istemcide karşılığı:

    ping -M do -s 1472 sunucu-adresiniz.com
  7. Eklenti ve modları ikili aramayla eleyin#

    Hata belirli bir eklenti eklendikten sonra başladıysa, eklentileri yarıya bölerek deneyin. Ağ paketine dokunan eklentiler (ProtocolLib tabanlı olanlar, özel tab-list ve scoreboard eklentileri, anti-cheat yazılımları) bu hatanın en sık kaynağıdır. 26.1 ile gelen unobfuscation nedeniyle NMS kullanan eski eklentiler yeniden derlenmeden çalışmaz; bu eklentiler yarım paket üretip Internal Exception döktürebilir.

Sürüm ve Protokol Uyuşmazlığı Kaynaklı Varyant#

DecoderException ve readerIndex içeren mesajlar neredeyse her zaman paket yapısının iki taraf arasında farklı yorumlandığını gösterir. Protokol sürümleri şu şekildedir:

Minecraft sürümüProtokolGerekli JavaDurum
26.2 “Chaos Cubed”776Java 25Güncel kararlı
26.1 “Tiny Takeover”775Java 25Desteklenen
1.20.5 – 1.21.11Sürüme göre değişirJava 21Eski hat
1.16.5 ve öncesiSürüme göre değişirJava 8Eskimiş
Protokol sürümleri ve Java gereksinimleri

Farklı istemci sürümlerini aynı sunucuda kabul etmek istiyorsanız ViaVersion ailesini kullanın. Ancak çeviri katmanı arttıkça paket bozulma riski de artar; özellikle 1.8 istemcilerini 26.2 sunucusuna bağlarken ViaRewind zinciri devreye girer ve Internal Exception vakaları çoğalır.

İndirmeniz gerekenler
  • ViaVersionÇoklu sürüm Paper / Velocity.jarÜcretsiz
    İndir
  • spark profiler Paper / Fabric / Forge.jarÜcretsiz
    İndir
  • Eclipse Temurin JDK 25LTS Windows / Linux.msi / .tar.gz
    İndir

Bağlantılar resmî kaynaklara gider. Üçüncü taraf sitelerden jar indirmeyin.

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

Bu sayfa işletim sisteminden bağımsızdır; aşağıdaki komutlar sunucu makinesinde ağ katmanının sağlığını doğrulamak içindir.

Sunucunun portu gerçekten dinliyor mu:

netstat -ano | findstr :25565
Get-NetTCPConnection -LocalPort 25565 -State Listen
sudo ss -tulpn | grep 25565
sudo journalctl -u minecraft -n 100 --no-pager

Windows ortamında güvenlik duvarı kuralı ve RDP tabanlı yönetim ayrıntıları için Windows sunucu kurulumu rehberine, Linux tarafında UFW, systemd ve kullanıcı izinleri için Linux sunucu kurulumu rehberine bakın.

İpucuAğ kaynaklı kopmaları kalıcı olarak azaltmanın en etkili yolu, sunucuyu oyuncularınıza fiziksel olarak yakın bir lokasyonda barındırmaktır. Türkiye lokasyonlu, 1 Gbit portlu ve ücretsiz DDoS korumalı Minecraft sunucu paketleri ping ve paket kaybı kaynaklı Internal Exception vakalarını belirgin biçimde azaltır.

Kalıcı Çözüm İçin Donanım Tarafı#

Internal Exception hatalarının önemli bir bölümü aslında gizli bir performans sorunudur: sunucu bir tick’te takılır, keep-alive paketine cevap veremez, istemci bağlantıyı düşürür. Bu nedenle ağ tarafında yaptığınız her ayar, altyapı yetersizse geçici kalır.

Sunucu profiliRAMİşlemciDisk
2–10 oyuncu, vanilla/hafif eklentili8 GBRyzen 9 3900X ve üzeri50 GB NVMe
10–30 oyuncu, eklentili Paper10–12 GBRyzen 9 7900X80 GB NVMe
30–60 oyuncu, çok dünyalı16 GBRyzen 9 7900X / 7950X100 GB NVMe
60+ oyuncu veya proxy’li ağ32 GB ve üzeriRyzen 9 7950X200 GB NVMe
Bağlantı kararlılığı için önerilen altyapı

Minecraft’ın ana tick döngüsü tek çekirdekte çalıştığı için çekirdek sayısı değil saat hızı belirleyicidir. Paylaşımlı vCPU üzerinde çalışan sunucularda tick süreleri düzensizleşir ve bağlantı kopmaları rastgele görünür. Doğru donanım seçimi için donanım seçimi rehberini inceleyin.

Hâlâ Çözülmediyse Ne Yapmalı?#

Yukarıdaki adımlar sonuç vermediyse hatayı daraltmak için şu sırayı izleyin:

  • Sunucuyu boş bir klasörde, eklentisiz ve modsuz temiz bir Paper 26.2 kurulumu ile açıp aynı hatanın tekrarlayıp tekrarlamadığını görün.
  • Hata temiz kurulumda yoksa eklentileri gruplar hâlinde geri ekleyin.
  • Hata temiz kurulumda da varsa sorun ağ yolundadır: veri merkezi, DDoS filtresi veya oyuncu tarafındaki ISP.
  • spark ile bir profil çıkarıp tick sürelerinde ani sıçrama olup olmadığını kontrol edin. Yöntem için spark ve timings analizi sayfasına bakın.
  • Çökme kaydı oluşmuşsa crash report okuma rehberiyle yığın izini çözümleyin.
DikkatInternet üzerinde sıkça önerilen “Java’yı yeniden kur” ya da “dosyaları sıfırla” tavsiyeleri bu hatada nadiren işe yarar ve veri kaybı riski taşır. Dünya klasörünü silmeden önce mutlaka yedek alın; yedekleme yöntemleri yedekleme rehberinde anlatıldı.

İlgili Hata Sayfaları#

Özetle#

Internal Exception hatası bir ağ katmanı hatasıdır ve tek başına neden bildirmez. İzlenecek yol nettir: hatayı alan kişi sayısını belirleyin, sunucu logundaki aynı zaman damgasını okuyun, TPS ve RAM durumunu doğrulayın, proxy varsa sıkıştırma eşiğini tek noktada bırakın, tek oyuncu etkileniyorsa MTU ve istemci modlarını test edin. Sunucunuz 8 GB’ın altında bellek veya paylaşımlı vCPU üzerinde çalışıyorsa yapılacak her ağ ayarı yalnızca semptomu erteler; kalıcı çözüm yüksek saat hızlı Ryzen ve NVMe tabanlı bir altyapıya geçmektir.

Sıkça Sorulan Sorular#

Internal Exception hatası nedir?

Internal Exception, Minecraft istemcisiyle sunucu arasındaki ağ bağlantısında Netty kütüphanesinin yakaladığı bir istisnanın oyuncuya gösterilen hâlidir. Oyunun kendi mantığıyla ilgisi yoktur; TCP bağlantısı beklenmedik biçimde koptuğunda, paket yarım geldiğinde veya çözümlenemediğinde ortaya çıkar. Mesajın ikinci satırındaki sınıf adı gerçek nedeni söyler.

Internal Exception: java.io.IOException hatası nasıl düzelir?

Önce hatanın hangi tarafta olduğunu belirleyin. Sunucuya başka bir ağdan (mobil veri) bağlanmayı deneyin; sorun kalkıyorsa kendi internetiniz veya yönlendiriciniz suçludur. Herkes aynı anda alıyorsa sunucu tarafında RAM yetersizliği, TPS düşüşü veya DDoS filtresi bağlantıları kesiyor demektir. Sunucu logundaki eşleşen zaman damgasına bakın.

Connection reset by peer ne anlama gelir?

Karşı taraf TCP bağlantısını RST paketiyle aniden kapattı demektir. Minecraft tarafında bunun üç tipik sebebi vardır: oyuncu Alt+F4 ile çıkmıştır, aradaki bir güvenlik duvarı veya DDoS filtresi bağlantıyı düşürmüştür ya da sunucu bir tick içinde donup istemcinin keep-alive paketine cevap verememiştir. Log satırının saatini TPS grafiğiyle karşılaştırın.

MTU değeri Internal Exception hatasına neden olur mu?

Evet, özellikle PPPoE ve VPN kullanan bağlantılarda olur. Yol üzerindeki bir cihaz 1500 baytlık paketleri parçalayamıyorsa büyük chunk paketleri düşer ve bağlantı kopar. İstemci tarafında MTU değerini 1400–1450 aralığına çekmek bu tip kopmaları çözer. Sunucu tarafında yapılacak bir MTU ayarı yoktur.

Sunucuda herkes aynı anda Internal Exception alıyorsa ne yapmalıyım?

Bu, istemci sorunu olmadığının kesin işaretidir. Sunucu konsolunu açıp aynı saniyedeki satırlara bakın: Can not keep up uyarısı, OutOfMemoryError veya uzun süren bir garbage collection duraklaması varsa sunucu donduğu için bağlantılar toplu hâlde düşmüştür. Tick gecikmesi sayfasındaki adımları uygulayın.

network-compression-threshold değerini değiştirmek işe yarar mı?

Bazı durumlarda evet. Varsayılan 256 baytlık eşik, tek sunucuda çoğu senaryo için doğrudur. Ancak proxy arkasındaki alt sunucularda sıkıştırmanın iki kez yapılması gecikme ve paket hatası üretir; Velocity veya BungeeCord kullanıyorsanız alt sunucularda bu değeri -1 yapıp sıkıştırmayı yalnızca proxy üzerinde bırakın.

Internal Exception hatası sürüm uyuşmazlığından da kaynaklanır mı?

Kaynaklanabilir. İstemci ile sunucu farklı protokol sürümündeyse çoğu zaman net bir “Outdated” mesajı görürsünüz, ancak ViaVersion gibi çeviri eklentileri araya girdiğinde paket yapısı bozulup Internal Exception biçiminde düşebilir. Bu durumda sürüm uyuşmazlığı sayfasındaki protokol tablosunu kontrol edin.

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