Minecraft Connection Timed Out hatası, istemcinin gönderdiği paketlere karşı taraftan hiçbir yanıt gelmediğini gösterir. Bağlantı reddedilmez, sessizce düşürülür; bu yüzden istemci belirlenen süre dolana kadar bekler ve sonunda zaman aşımı verir. Hatanın çözümü, paketin nerede kaybolduğunu bulmaktan geçer: sunucuya hiç ulaşmıyor mu, yoksa ulaşıyor ama sunucu cevap veremiyor mu?
Bu iki senaryo tamamen farklı çözümler gerektirir. Birincisi bir ağ sorunudur; ikincisi aslında bir performans sorunudur ve ağ tarafında ne yaparsanız yapın düzelmez. Aşağıda önce hatanın metnini, sonra ayrım yöntemini, ardından her iki dal için ayrı çözüm zincirlerini bulacaksınız.
Hatanın Birebir Metni#
Bağlanma aşamasında görülen biçim:
io.netty.channel.ConnectTimeoutException: connection timed out: sunucu-adresiniz.com/93.184.216.34:25565
java.net.SocketTimeoutException: Connect timed out
Oyun sırasında atılma biçimi:
Timed out
Internal Exception: io.netty.handler.timeout.ReadTimeoutException
Sunucu tarafında aynı olayın karşılığı:
[19:47:02] [Server thread/INFO]: oyuncuadi lost connection: Timed out
[19:47:02] [Server thread/WARN]: Can not keep up! Is the server overloaded? Running 4213ms or 84 ticks behind
lost connection: Timed out ifadesi sunucunun oyuncuyu attığını, istemci ekranındaki sade “Timed out” ise istemcinin bağlantıyı kestiğini gösterir. Hangi tarafın önce vazgeçtiği, sorunun hangi tarafta olduğuna dair güçlü bir ipucudur.Neden Olur? Belirti, Neden ve Çözüm Tablosu#
| Belirti | Olası neden | Çözüm |
|---|---|---|
| Sunucu listede hiç görünmüyor, bağlanınca timeout | Paket hedefe ulaşmıyor: yanlış IP, yönlendirme yok, DROP kuralı | traceroute ve port testi yapın |
| Ping çalışıyor ama port açılmıyor | Güvenlik duvarı TCP 25565’i sessizce düşürüyor | Gelen kural ekleyin, DROP yerine ACCEPT |
| Bir oyuncu düşüyor, diğerleri sorunsuz | O oyuncunun hattında paket kaybı veya yüksek ping | Oyuncuda mtr/traceroute çıktısı isteyin |
| Herkes aynı anda “Timed out” ile düşüyor | Sunucu tick döngüsü kilitlendi (GC, disk, eklenti) | Tick gecikmesi sayfası |
| İlk girişte düşüyor, sonra sorunsuz | Chunk yükleme paketleri çok büyük | view-distance değerini 8’e çekin |
| Aynı evden bağlanan ikinci oyuncu düşüyor | DDoS filtresi bağlantı sayısını sınırlıyor | Sağlayıcı panelinden IP durumunu kontrol edin |
| Dünya kaydedilirken herkes donuyor | Disk I/O tıkanması, yavaş depolama | NVMe SSD ve otomatik kayıt aralığı ayarı |
Birinci Ayrım: Ağ mı, Sunucu mu?#
Bu ayrımı üç dakikada yapabilirsiniz ve yapmadan atacağınız her adım tahmin olur.
-
Yol üzerinde paket kaybı var mı?#
Oyuncu tarafından sunucuya doğru bir izleme yapın. Windows’ta:
tracert -d sunucu-adresiniz.com ping -n 50 sunucu-adresiniz.comLinux ve macOS’ta daha okunaklı sonucu
mtrverir:mtr -rwzbc 100 sunucu-adresiniz.com ping -c 50 sunucu-adresiniz.comSon satırda (hedef) kayıp yüzdesi %1’in üzerindeyse ağ yolunda gerçek bir sorun vardır. Ara duraklardaki kayıp genelde yanıltıcıdır; yalnızca son satır anlamlıdır.
-
Port gerçekten açık mı?#
Test-NetConnection -ComputerName sunucu-adresiniz.com -Port 25565nc -zvw5 sunucu-adresiniz.com 25565 timeout 5 bash -c "</dev/tcp/sunucu-adresiniz.com/25565" && echo ACIK || echo KAPALISonuç zaman aşımıysa paket düşürülüyor, “refused” ise port kapalı ama makine ulaşılabilir demektir. İkinci durumda Connection Refused sayfasına geçin.
-
Sunucu logunda o saniyede ne var?#
Sunucu tarafında oyuncunun düştüğü saati arayın:
grep -n "lost connection\|Can not keep up\|Saving chunks" logs/latest.log | tail -30Select-String -Path .\logs\latest.log -Pattern "lost connection|Can not keep up" | Select-Object -Last 30Zaman aşımlarının hemen öncesinde
Can not keep upsatırları varsa sorun ağ değil performanstır. Bu tespit çözümün yönünü tamamen değiştirir.
Dal 1: Paket Sunucuya Ulaşmıyor#
Port testi zaman aşımı veriyorsa sırayla şu üç katmanı kontrol edin.
Güvenlik duvarı DROP kuralları#
DROP kuralı paketi cevapsız yutar ve tam olarak zaman aşımı üretir; REJECT ise refused döndürür. Mevcut kuralları listeleyin:
sudo iptables -L INPUT -n --line-numbers
sudo ufw status verbose
Get-NetFirewallRule -Direction Inbound -Enabled True |
Where-Object DisplayName -like "*Minecraft*" | Format-Table DisplayName,Action
Gerekli kuralı ekleyin:
sudo ufw allow 25565/tcp comment "Minecraft Java"
sudo ufw allow 19132/udp comment "Minecraft Bedrock"
sudo ufw reload
Sunucu doğru arayüzü dinliyor mu?#
sudo ss -tulpn | grep -E "25565|19132"
Çıktı 127.0.0.1:25565 gösteriyorsa dışarıdan gelen hiçbir paket işlenmez. server.properties içindeki server-ip satırını boşaltıp sunucuyu yeniden başlatın.
DDoS filtresi ve rate limit#
Dal 2: Sunucu Cevap Veremiyor#
Sunucu logunda tick gecikmesi görüyorsanız hata ağda değil, sunucunun içindedir. Zaman aşımı burada bir sonuçtur, sebep değil.
Garbage collection duraklamaları#
Heap doluysa ya da yanlış GC ayarları kullanılıyorsa JVM saniyelerce durur ve bu süre boyunca hiçbir pakete cevap verilmez. 8–12 GB heap aralığında G1GC ve Aikar’s Flags 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:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 \
-XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 \
-XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 \
-XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 \
-jar paper.jar nogui
16 GB ve üzeri heap ile ağır modlu sunucularda ZGC değerlendirilebilir. Doğru kullanım yalnızca -XX:+UseZGC şeklindedir; Java 25’te -XX:+ZGenerational bayrağı obsolete olmuştur ve uyarı basar. Ayrıntılar RAM ve JVM flag ayarları sayfasındadır.
Chunk ve entity yükü#
view-distance=8
simulation-distance=6
max-tick-time=60000
sync-chunk-writes=false
view-distance değeri 12’nin üzerindeyse her oyuncu için gönderilen chunk verisi katlanarak artar ve ilk giriş anında zaman aşımı görülür. Değerlerin etkisi view distance ayarları sayfasında tablolarla anlatıldı.
Disk gecikmesi#
Dünya kaydetme sırasında herkes donuyorsa depolama tarafında bir darboğaz vardır. HDD veya paylaşımlı SATA SSD üzerinde çalışan sunucularda bu durum kaçınılmazdır. Chunk okuma/yazma gecikmesi doğrudan tick süresine yansır; bu yüzden Minecraft sunucusunda NVMe SSD tercih edilmelidir.
Donanım Tarafı: Zaman Aşımını Kökten Kesmek#
| Oyuncu profili | RAM | İşlemci | Disk |
|---|---|---|---|
| 2–10 oyuncu, vanilla | 8 GB | Ryzen 9 3900X ve üzeri | 50 GB NVMe |
| 10–30 oyuncu, eklentili Paper | 10–12 GB | Ryzen 9 7900X | 80 GB NVMe |
| 30–60 oyuncu, minigame/çok dünyalı | 16 GB | Ryzen 9 7900X / 7950X | 100 GB NVMe |
| Forge / Fabric modpack | 16 GB (büyükte 24–32 GB) | Ryzen 9 7950X | 100 GB+ NVMe |
| 60+ oyuncu veya sunucu ağı | 32 GB ve üzeri | Ryzen 9 7950X | 200 GB NVMe |
Minecraft’ın ana tick döngüsü tek çekirdekte döner; bu yüzden çok çekirdekli ama düşük frekanslı işlemciler bu iş için uygun değildir. Yüksek saat hızlı Ryzen tabanlı yüksek frekanslı VDS paketleri tick sürelerini stabil tutarak keep-alive kaynaklı kopmaları ortadan kaldırır.
Teşhis Araçları#
Bağlantılar resmî kaynaklara gider. Üçüncü taraf sitelerden jar indirmeyin.
spark kurulduktan sonra konsolda /spark profiler start --timeout 120 komutuyla iki dakikalık bir profil alın. Rapor bağlantısında hangi metodun tick süresini uzattığı satır satır görünür. Kullanımı spark ve timings analizi sayfasında anlatıldı.
Oyuncu Tarafında Yapılabilecekler#
Sunucu sağlıklıysa ve yalnızca belirli oyuncular etkileniyorsa şu adımlar önerilebilir:
- Wi-Fi yerine kablolu bağlantı kullanmak; paket kaybının en yaygın kaynağı kablosuz bağlantıdır.
- VPN veya proxy kapatmak; ek şifreleme katmanı gecikmeyi artırır ve MTU sorunları doğurur.
- İstemci tarafındaki ağ modlarını devre dışı bırakmak.
- Aynı ağdaki büyük indirmeleri durdurmak; yükleme kanalı dolduğunda keep-alive paketleri gecikir.
- Sunucu adresini IP ile denemek; DNS çözümlemesi yavaşsa ilk bağlantı zaman aşımına düşebilir.
İlgili Hata Sayfaları#
- Connection Refused hatası — port kapalıysa.
- io.netty ReadTimeoutException — zaman aşımının sunucu tarafındaki karşılığı.
- Internal Exception hatası — bağlantı kurulduktan sonra kopmalarda.
- Tüm Minecraft sunucu hataları ve çözümleri — pillar rehber.
Özetle#
Connection timed out, cevapsız kalmış bir bağlantı denemesidir ve iki farklı kökene sahiptir. Paket sunucuya hiç ulaşmıyorsa güvenlik duvarı DROP kuralları, dinlenen arayüz, port yönlendirme ve DDoS filtresi sırayla kontrol edilir. Paket ulaşıyor ama sunucu cevap veremiyorsa sorun performanstır: GC duraklamaları, yüksek view distance, disk gecikmesi ve yetersiz RAM. Ayrımı yapmanın en hızlı yolu sunucu logundaki aynı saniyeye bakmaktır. Zaman aşımı sürekliyse ve tick gecikmesi eşlik ediyorsa ağ ayarlarıyla uğraşmayı bırakıp yüksek saat hızlı işlemci ve NVMe tabanlı bir altyapıya geçin.