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

Minecraft “End of Stream” Hatası Çözümü

End of stream bağlantının karşı taraftan kapandığını söyler. Proxy, güvenlik duvarı, sürüm uyuşmazlığı ve bellek tükenmesi kaynaklı sebepler.

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

Kısaca Özet

  • End of stream, “karşı taraf TCP bağlantısını düzgün bir çıkış paketi göndermeden kapattı” demektir. Metin Minecraft’ın disconnect.endOfStream anahtarından gelir ve tek başına sebep bildirmez.
  • Mesajı oyuncu görüyorsa bağlantıyı sunucu ya da aradaki bir katman kapatmıştır. Sunucu logunda görüyorsanız istemci tarafı kaybolmuştur.
  • Sunucu tarafında ilk üç şüpheli: süreç çöktü (crash raporuna bakın), bellek tükendi ya da proxy’deki IP forwarding ayarı alt sunucuyla uyuşmuyor.
  • İstemci tarafında en sık sebepler ağ kesintisi, VPN, antivirüs ve paket yapısına dokunan modlardır; ayrıca DDoS filtreleri bağlantıyı sessizce düşürebilir.
  • Teşhisin tek doğru yolu logs/latest.log içinde kopmanın saatiyle aynı saniyedeki diğer satırları okumaktır.

Minecraft “End of stream” hatası, oyunun içinde bir şeyin bozulduğunu değil, ağ bağlantısının karşı taraftan kapatıldığını bildirir. Minecraft’ın ağ katmanı, TCP kanalının düzgün bir bağlantı kesme paketi gelmeden aniden kapandığını fark ettiğinde bu mesajı üretir. Yani ortada bir hata değil, bir sonuç var: karşı taraf gitti.

Bu yüzden mesaj tek başına hiçbir şey söylemez. Sunucunun çökmesi de, bir DDoS filtresinin bağlantıyı sessizce düşürmesi de, oyuncunun modeminin yeniden başlaması da aynı metni üretir. Teşhis, mesajı okumakla değil, kopmanın saatini loglarla eşleştirmekle yapılır. Aşağıda mesajın tam anlamını, sunucu ve istemci tarafındaki sebepleri, proxy yapılandırmasından kaynaklanan klasik tuzağı ve sırayla uygulanacak bir eleme listesini bulacaksınız. İçerik Minecraft 26.2 “Chaos Cubed” ve Paper 26.2 dönemine göre yazıldı.

“End of Stream” Tam Olarak Ne Anlatır?#

Oyuncunun ekranında görünen metin kısacıktır:

End of stream

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

İlk metin Minecraft’ın dil dosyasındaki disconnect.endOfStream anahtarından gelir. İkincisi ise aynı olayın Windows istemcilerinde daha sık görülen varyantıdır. Her ikisi de tek bir şeyi anlatır: veri akışı bitti, kanal kapandı, karşı taraf artık yok.

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

[22:07:41] [Server thread/INFO]: Batihost_Emre lost connection: End of stream
[22:07:41] [Server thread/INFO]: Batihost_Emre left the game
[22:07:42] [Netty Server IO #2/WARN]: Failed to read packet, disconnecting client
BilgiMesajı kim görüyorsa suçlu karşı taraftadır. Oyuncu ekranında görünüyorsa bağlantıyı sunucu (ya da yolun üzerindeki bir cihaz) kapatmıştır; sunucu konsolunda görünüyorsa istemci kaybolmuştur. Bu tek cümlelik kural, teşhis süresini yarıya indirir.

Kim Kapattı? İki Yönlü Okuma#

Çözüme başlamadan önce iki soruya cevap verin. Cevaplar üç dakikada alınır ve tüm yönü belirler.

Tek oyuncu mu düşüyor?#

  • Kendi internet bağlantısı ya da Wi-Fi kalitesi
  • VPN, proxy veya antivirüs yazılımı
  • İstemci tarafındaki modlar
  • Oyuncunun ISP’si ile veri merkezi arasındaki yol

Herkes aynı anda mı düşüyor?#

  • Sunucu süreci çöktü ya da yeniden başladı
  • Bellek tükendi, JVM öldürüldü
  • Proxy ile alt sunucu arasındaki bağ koptu
  • Güvenlik duvarı veya DDoS filtresi devreye girdi

İkinci soru: sunucu hâlâ ayakta mı? Oyuncular düştükten sonra sunucu listesinde görünmeye devam ediyorsa süreç yaşıyordur ve kopma ağ yolundadır. Sunucu da listeden kaybolduysa süreç ölmüştür; artık bir bağlantı sorunu değil, bir çökme sorunu araştırıyorsunuz demektir.

Sunucu Tarafındaki Sebepler#

Sunucu kaynaklı End of stream vakalarının neredeyse tamamı dört başlıkta toplanır.

1. Süreç çöktü#

Sunucu jar’ı bir istisna nedeniyle kapandıysa açık olan tüm TCP bağlantıları anında düşer ve her oyuncu End of stream görür. Çökme anında crash-reports/ klasöründe bir dosya oluşur:

ls -lt crash-reports/ | head -5
tail -n 60 logs/latest.log

Crash raporunun nasıl okunacağı, hangi bölümün gerçek nedeni verdiği ayrı bir konu; adım adım yöntem crash report okuma rehberinde anlatıldı. Bir varlık işlenirken çökme oluyorsa Ticking Entity sayfası daha hedefli bir yol sunar.

2. Bellek tükendi#

Heap dolduğunda iki şey olabilir: JVM OutOfMemoryError fırlatıp kilitlenir ya da işletim sistemi süreci öldürür. İkincisi Linux’ta özellikle sinsidir, çünkü sunucu logunda hiçbir iz bırakmaz:

sudo dmesg -T | grep -i "killed process"
sudo journalctl -u minecraft -n 200 --no-pager | grep -iE "oom|killed|exit"

Servis çıkış kodu 137 ise süreç SIGKILL ile öldürülmüştür; bu neredeyse her zaman bellek yetersizliği demektir. Heap ayarlarını paketinize göre verin: 8 GB pakette -Xms6G -Xmx6G, 12 GB pakette -Xms10G -Xmx10G, 16 GB pakette -Xms14G -Xmx14G. Xms ve Xmx daima eşit olmalıdır, ayrıntılar RAM ve JVM flag ayarları sayfasında. Hata metnini birebir gördüyseniz Out of Memory sayfası daha ayrıntılıdır.

3. Yeniden başlatma betiği#

Zamanlanmış yeniden başlatmalar oyunculara düzgün bir kapanma mesajı gösterir (“Server closed”). Ama betik sunucuyu /stop yerine kill -9 ile öldürüyorsa oyuncular End of stream görür ve üstelik dünya dosyaları bozulma riskine girer. Bu yaygın bir yapılandırma hatasıdır.

UyarıMinecraft sunucusunu asla kill -9 ile durdurmayın. Chunk yazımı yarıda kalır, region dosyaları bozulur. Doğru kapatma konsolda /stop komutudur; screen oturumundaysanız screen -S mc -X stuff "stop$(printf '\r')" kullanın.

4. Ana thread kilitlendi#

Sunucu teknik olarak yaşıyor ama bir eklenti ya da mod ana thread’i bloke ediyorsa keep-alive paketleri cevapsız kalır ve bağlantılar toplu hâlde düşer. Watchdog devreye girip süreci sonlandırdığında ise herkes aynı anda End of stream görür. Bu senaryoda Watchdog crash sayfasındaki thread dump okuma yöntemi işinizi görür.

Proxy ve IP Forwarding Uyuşmazlığı#

BungeeCord ya da Velocity kullanan ağlarda End of stream vakalarının en büyük kaynağı budur. Proxy ile alt sunucu farklı yöntemlerle konuşmaya çalışır, el sıkışma çözülemez ve alt sunucu bağlantıyı kapatır. Oyuncu bunu End of stream olarak görür.

Velocity’nin modern forwarding modunda üç şeyin aynı anda doğru olması gerekir:

# Alt sunucu — server.properties
online-mode=false
server-ip=127.0.0.1
server-port=25566
# Alt sunucu — config/paper-global.yml
proxies:
  bungee-cord:
    online-mode: true
  proxy-protocol: false
  velocity:
    enabled: true
    online-mode: true
    secret: 'velocity-forwarding-secret-degeri'
# Proxy — velocity.toml
player-info-forwarding-mode = "modern"
forwarding-secret-file = "forwarding.secret"

BungeeCord kullanıyorsanız denklem farklıdır: proxy tarafında config.yml içinde ip_forward: true, alt sunucuda ise spigot.yml içinde settings.bungeecord: true olmalıdır. İki sistemi karıştırmak — yani Velocity’yi modern moda alıp alt sunucuda BungeeCord anahtarını açmak — klasik hatadır ve tam olarak bu mesajla sonuçlanır.

ProxyProxy tarafı ayarıAlt sunucu ayarıonline-mode
Velocity (modern)player-info-forwarding-mode = "modern"proxies.velocity.enabled: true + aynı secretfalse (alt sunucuda)
Velocity (legacy)player-info-forwarding-mode = "legacy"settings.bungeecord: true (spigot.yml)false (alt sunucuda)
BungeeCordip_forward: truesettings.bungeecord: true (spigot.yml)false (alt sunucuda)
Proxy yoktrue
Proxy türüne göre doğru forwarding yapılandırması
UyarıAlt sunucularda online-mode=false yalnızca o sunucular dış dünyaya kapalıysa güvenlidir. 25566, 25567 gibi alt sunucu portlarını güvenlik duvarıyla kapatın; aksi hâlde herkes istediği nickle doğrudan girebilir. Ayarın anlamı ve riskleri için online-mode sayfasını, kurulum sırası için proxy kurulum rehberini okuyun.

İstemci Tarafındaki Sebepler#

Sadece belirli oyuncular düşüyorsa ve sunucu logunda başka hiçbir uyarı yoksa sorun büyük olasılıkla istemci tarafındadır:

  • Ağ kesintisi: modem yeniden başlar, Wi-Fi kanal değiştirir, mobil bağlantı hücre değiştirir. Kısa bir kesinti bile TCP oturumunu düşürür.
  • VPN ve proxy: tünel yenilenirken oturum kopar. Ayrıca düşük MTU değerleri büyük chunk paketlerini engeller.
  • Antivirüs ve güvenlik yazılımları: Java sürecinin giden bağlantısını “şüpheli” sayıp kesebilir. Java’yı istisna listesine ekleyin.
  • Modlar: ağ paketine dokunan istemci modları (özellikle eski sürüm için derlenmiş olanlar) yarım paket üretip kanalı kapatabilir.
  • Yanlış adres veya port: Minecraft dışı bir servise bağlanmak da tam olarak bu mesajı verir; servis bağlantıyı hemen kapatır.

Hızlı test yöntemi basit: oyuncu mobil veri üzerinden bağlansın. Sorun kalkıyorsa suçlu kendi ağıdır. Aynı ağdan başka bir sunucuya sorunsuz giriliyorsa suçlu yol üzerindeki bir cihazdır.

Güvenlik Duvarı ve DDoS Filtresi Kaynaklı Kesintiler#

Bu sebep, log tarafında hiçbir iz bırakmadığı için en geç fark edileni. Filtre bağlantıyı düşürdüğünde ne sunucu ne istemci bir hata yazar; yalnızca akış biter. Sunucu logunda kopma anında hiçbir uyarı yoksa buraya bakın.

  • Bağlantı hızı limitleri: kısa sürede çok sayıda bağlantı açan IP’ler engellenir. Sunucu tarayıcıları ve bot saldırıları meşru oyuncuları da kapsayan kurallar tetikleyebilir.
  • Yanlış imza kuralları: katman 7 filtreleri Minecraft paketlerini tanımıyorsa geçerli trafiği düşürebilir.
  • Coğrafi engelleme: bazı lokasyon dışı IP blokları varsayılan olarak reddedilir.
  • Sunucu tarafı güvenlik duvarı: UFW, firewalld veya Windows Defender kuralı 25565 dışındaki bir portu kapatıyorsa alt sunucular ve proxy birbirine ulaşamaz.
# Portun gerçekten dinlendiğini doğrulayın
sudo ss -tulpn | grep 25565
sudo ufw status numbered
Get-NetTCPConnection -LocalPort 25565 -State Listen
Get-NetFirewallRule -DisplayName "*Minecraft*" | Format-Table DisplayName,Enabled,Direction,Action

Koruma tarafındaki kural yapısı ve filtre seviyeleri için DDoS koruması sayfasına bakın. Kural değişikliği yapmadan önce mevcut kuralların yedeğini alın; yanlış bir kural tüm oyuncuları dışarıda bırakır.

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

İstemci ile sunucu farklı protokol sürümündeyse normalde net bir “Outdated” mesajı görürsünüz. Ama araya bir çeviri katmanı girdiğinde tablo değişir: ViaVersion zinciri paketleri dönüştüremezse kanal kapanır ve oyuncu End of stream görür. 26.2 protokol 776, 26.1 ise 775 kullanır.

SürümProtokolGerekli 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 kabul ediyorsanız çeviri katmanını güncel tutun. Kurulum ve uyumluluk tablosu ViaVersion sayfasında; birebir sürüm hatası metinleri ise Outdated Server / Outdated Client sayfasında duruyor.

İndirmeniz gerekenler
  • spark profilerTeşhis Paper / Velocity / Fabric.jarÜcretsiz
    İndir
  • ViaVersion Paper / Velocity.jarÜcretsiz
    İndir
  • Eclipse Temurin JDK 25LTS Windows / Linux.msi / .tar.gz
    İndir

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

latest.log’da Eşzamanlı Satırı Bulma#

Teşhisin can alıcı adımı bu. Amaç, kopmanın saatini bulup aynı saniyedeki diğer satırları okumak. Şöyle ki: End of stream satırının kendisi hiçbir şey anlatmaz, ondan hemen önceki 20-30 satır herşeyi anlatır.

  1. Kopma satırlarını listeleyin#

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

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

    Select-String -Path .\logs\latest.log -Pattern "lost connection" | Select-Object -Last 30
  2. O saniyenin çevresini okuyun#

    Bulduğunuz satır numarasının 30 satır öncesinden itibaren okuyun. Aradığınız şey bir istisna, uzun bir GC duraklaması ya da bir eklenti uyarısı.

    sed -n '4180,4240p' logs/latest.log
    grep -nE "ERROR|WARN|Exception|keep up" logs/latest.log | tail -40
  3. Sıkıştırılmış eski logları da tarayın#

    Sunucu her gün logu arşivler. Olay dünse logs/ klasöründeki .log.gz dosyalarına bakın.

    zgrep -h "lost connection: End of stream" logs/*.log.gz | tail -40
  4. Sistem tarafını kontrol edin#

    Sunucu logunda hiçbir iz yoksa süreç dışarıdan öldürülmüş olabilir.

    sudo journalctl -u minecraft --since "1 hour ago" --no-pager
    sudo dmesg -T | tail -50

Log dosyalarının yapısı, hangi etiketlerin ne anlama geldiği ve zaman damgalarının nasıl okunacağı log okuma rehberinde ayrıntılı anlatıldı.

Sırayla Eleme Kontrol Listesi#

Aşağıdaki sırayı bozmadan uygulayın. Her adım bir olasılık grubunu tamamen eler; sıçrayarak ilerlemek zaman kaybettirir.

#KontrolSonuç “evet” ise
1Sunucu süreci hâlâ çalışıyor mu?Çökme elendi, ağ tarafına geçin
2crash-reports/ içinde yeni dosya var mı?Çökme sebebini rapordan okuyun
3Çıkış kodu 137 mi, dmesg’de OOM izi var mı?Bellek yetersiz, heap ve paket boyutunu artırın
4Kopma anında logda istisna veya GC duraklaması var mı?Eklenti/mod tarafına odaklanın
5Proxy kullanıyor musunuz?Forwarding modu ve secret değerini doğrulayın
6Sadece belirli oyuncular mı düşüyor?İstemci ağı, VPN, mod ve antivirüs
7Logda hiçbir iz yok ama herkes düşüyor mu?Güvenlik duvarı veya DDoS filtresi
8Temiz kurulumda (eklentisiz) tekrar ediyor mu?Sorun altyapıda; etmiyorsa eklentilerde
End of stream için sırayla eleme listesi
İpucuSekizinci adım en güvenilir olanı. Boş bir klasöre eklentisiz, modsuz temiz bir Paper 26.2 kurup aynı dünyayı yükleyin ve bir saat izleyin. Hata tekrar etmiyorsa eklentileri gruplar hâlinde geri ekleyerek daraltın; tekrar ediyorsa artık yazılımda değil altyapıda arayın. Türkiye lokasyonlu, 1 Gbit portlu ve DDoS korumalı Minecraft sunucu paketleri bu tip kopmaları ağ tarafında büyük ölçüde ortadan kaldırır.

İlgili Hata Sayfaları#

Özetle#

End of stream bir arıza adı değil, bir gözlemdir: bağlantı karşı taraftan kapandı. Doğru teşhis için önce mesajı kimin gördüğünü belirleyin, sonra kaç kişinin etkilendiğine bakın, ardından logs/latest.log içinde kopma saatiyle aynı saniyedeki satırları okuyun. Sunucu tarafında çökme, bellek tükenmesi ve proxy forwarding uyuşmazlığı; istemci tarafında ağ kesintisi, VPN ve modlar ilk sıradadır. Logda hiçbir iz yokken herkesin düşmesi ise güvenlik duvarı ya da DDoS filtresini işaret eder. Bunları sırayla elediğinizde geriye tek bir sebep kalır — ve o noktada çözüm genellikle tek satırlık bir ayardır. Adımları uyguladığınız halde sonuç alamadıysanız log dosyanızla birlikte destek talebi açın.

Sıkça Sorulan Sorular#

Minecraft End of Stream hatası ne anlama gelir?

Bağlantının karşı taraftan, düzgün bir bağlantı kesme paketi gönderilmeden kapatıldığı anlamına gelir. Minecraft ağ katmanı kanalı aniden kapanmış bulur ve bunu “End of stream” olarak bildirir. Mesaj neden kapandığını söylemez; sunucunun çökmesinden güvenlik duvarına, VPN kesintisinden proxy yapılandırma hatasına kadar birçok sebep aynı metni üretir.

End of Stream hatası sunucu kaynaklı mı istemci kaynaklı mı?

Mesajı kim görüyorsa karşı taraf suçludur. Oyuncu ekranında görünüyorsa bağlantıyı sunucu ya da aradaki proxy, güvenlik duvarı veya DDoS filtresi kapatmıştır. Sunucu konsolunda lost connection: End of stream satırı varsa istemci tarafı kaybolmuştur. Aynı anda birden çok oyuncu düşüyorsa neredeyse kesinlikle sunucu tarafındasınız.

Sunucuya girerken hemen End of Stream alıyorum, neden?

Bağlantı el sıkışma aşamasında kesiliyorsa üç şey öne çıkar: yanlış port (Minecraft dışı bir servise bağlanıyorsunuz), proxy ile alt sunucu arasındaki IP forwarding uyuşmazlığı ve protokol sürümü uyuşmazlığı. Önce port numarasını doğrulayın, ardından proxy kullanıyorsanız paper-global.yml içindeki forwarding ayarlarını kontrol edin.

latest.log dosyasında hangi satırı aramalıyım?

Önce kopmanın saatini öğrenin, sonra o saniyeye bakın. lost connection içeren satırı bulun ve hemen öncesindeki 20-30 satırı okuyun. Uzun bir garbage collection duraklaması, OutOfMemoryError, bir eklenti istisnası veya Can’t keep up uyarısı görüyorsanız sebep orada demektir.

VPN kullanmak End of Stream hatasına yol açar mı?

Evet, sık görülen bir sebeptir. VPN istemcisi tünel yenilerken veya sunucu değiştirirken mevcut TCP oturumu düşer ve Minecraft bunu End of stream olarak raporlar. Ayrıca bazı VPN’lerin MTU değeri düşüktür, büyük chunk paketleri parçalanamaz. Test için VPN’i kapatıp doğrudan bağlanmayı deneyin.

Velocity kullanıyorum, oyuncular End of Stream ile düşüyor. Ne yapmalıyım?

Alt sunucularda config/paper-global.yml içindeki proxies.velocity.enabled değerinin true, secret alanının ise Velocity’deki forwarding.secret dosyasıyla birebir aynı olduğunu doğrulayın. Bu iki değer uyuşmazsa alt sunucu el sıkışmayı çözemez ve bağlantıyı kapatır. Ayrıca alt sunucularda online-mode=false olmalıdır.

DDoS koruması End of Stream hatasına sebep olur mu?

Olabilir. Filtre, kısa sürede çok sayıda bağlantı açan veya imza kurallarına takılan bir IP’yi sessizce düşürür; oyuncu tarafında bu End of stream olarak görünür. Sunucu logunda ise hiçbir iz kalmaz. Log tarafında hiçbir şey yokken oyuncuların düşmesi, filtre kaynaklı kesintinin en tipik işaretidir.

End of Stream ile Internal Exception arasındaki fark nedir?

İkisi de ağ katmanı mesajıdır ama farklı anı anlatır. End of stream, kanalın karşı taraftan kapatıldığını söyler. Internal Exception ise okuma veya çözümleme sırasında bir istisna yakalandığını bildirir ve ikinci satırında genelde asıl sınıf adını verir. Teşhis adımları büyük ölçüde ortaktır.

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?
  15. “You are not white-listed on this server!” Hatası Çözümü
  16. Minecraft “Server is Full” Hatası Çözümü
  17. Minecraft “Kicked from Server” Hatası Çözümü
  18. Bozuk (Corrupted) Minecraft Dünyası Kurtarma
  19. Minecraft “Authentication Servers Are Down” Hatası
  20. Minecraft “Could Not Load Plugin” Hatası Çözümü
  21. Minecraft “Exit Code 1” Hatası Nasıl Çözülür?
  22. Minecraft “Flying Is Not Enabled On This Server” Hatası
  23. Minecraft “End of Stream” Hatası Çözümü
  24. Minecraft “Ticking Entity / Ticking Block Entity” Hatası
  25. Minecraft Watchdog Crash ve Server Thread Dump Okuma
  26. OpenJDK Platform Binary Nedir, Neden Çok CPU Kullanır?

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