Как исправить ошибку «Connection reset»
1. Понимание ошибки и первичная диагностика
Ошибка Connection reset (или java.net.SocketException: Connection reset) означает, что TCP-соединение было внезапредельно разорвано одной из сторон без отправки пакета FIN/RST по протоколу. На сервере Minecraft это чаще всего указывает на:
- Краш игрового процесса (OOM, ошибка плагина/мода, нехватка файловых дескрипторов).
- Блокировку трафика фаерволом (UFW, iptables, облачный фаервол proxify.cloud).
- Проблемы с MTU/фрагментацией пакетов при использовании VPN/прокси.
- Некорректную настройку
server.properties(неверныйserver-ip, порт).
Первое действие: откройте консоль сервера в панели proxify.cloud (вкладка «Console» контейнера/VM) и посмотрите, есть ли там стектрейсы или сообщение Killed (признак OOM Killer).
2. Проверка состояния сервиса и логов
2.1. Статус systemd-юнита (если сервер запущен как сервис)
systemctl status minecraft-server
Ищите Active: failed или Main PID: ... (code=killed, signal=KILL/SEGV).
2.2. Последние строки лога игрового сервера
tail -n 200 /opt/minecraft/logs/latest.log
Путь может отличаться: /home/minecraft/server/logs/latest.log или /var/lib/minecraft/logs/latest.log. Ищите:
OutOfMemoryError: Metaspace/Java heap space.Exception in thread "Server Watchdog".- Ошибки плагинов:
Could not load 'plugins/Essentials.jar'.
2.3. Системный журнал (OOM Killer)
journalctl -u minecraft-server -n 100 --no-pager
# или глобально
dmesg -T | grep -i -e kill -e oom -e minecraft
Если видите Out of memory: Killed process <PID> (java) — проблема в нехватке RAM.
3. Проверка сетевой доступности и фаерволов
3.1. Прослушиваемый порт внутри Ubuntu
ss -tlnp | grep :25565
# или
netstat -tlnp | grep :25565
Ожидаемый вывод: LISTEN 0 100 0.0.0.0:25565 (или конкретный IP). Если пусто — сервер не стартовал или забиндился на IPv6 (:::25565).
3.2. Локальный тест подключения
nc -zv 127.0.0.1 25565
# или
timeout 3 bash -c "</dev/tcp/127.0.0.1/25565" && echo "Port open"
Успех: Connection to 127.0.0.1 25565 port [tcp/*] succeeded!.
3.3. Фаервол Ubuntu (UFW)
ufw status verbose
Добавьте правило, если отсутствует:
ufw allow 25565/tcp comment 'Minecraft Java'
ufw reload
3.4. Фаервол proxify.cloud (панель управления)
- Зайдите в proxify.cloud → выберите ваш выделенный сервер / VM.
- Откройте раздел Network → Firewall (или «Фаервол»).
- Убедитесь, что есть правило Allow для TCP 25565 (и 25575 для RCON, 19132/udp для Bedrock).
- Если используете Cloud Firewall (внешний L3/L4 балансер) — проверьте правила там. Частая ошибка: порт открыт в UFW, но заблокирован на уровне дата-центра.
3.5. Проверка с внешнего хоста
nmap -Pn -p 25565 <ВАШ_ПУБЛИЧНЫЙ_IP>
# или с ПК игрока
telnet <ВАШ_ПУБЛИЧНЫЙ_IP> 25565
Статус filtered — блокирует фаервол proxify.cloud или вышестоящий провайдер. closed — сервер не слушает порт. open — сеть в порядке, проблема в приложении.
4. Настройка server.properties
Файл: /opt/minecraft/server.properties (путь к вашей инсталляции).
Критические параметры:
server-ip=0.0.0.0
server-port=25565
enable-rcon=false
rcon.port=25575
rcon.password=strongpass
network-compression-threshold=256
max-tick-time=60000
server-ip=0.0.0.0слушает на всех интерфейсах. Не ставьте публичный IP или 127.0.0.1.max-tick-time=60000предотвращает краш Watchdog при лагах (60 сек вместо дефолтных 60 сек, но можно поставить-1для отключения, осторожно).network-compression-threshold=256снижает нагрузку на CPU/пропускную способность.
После изменений: полный рестарт (не /reload):
systemctl restart minecraft-server
5. Решение проблем с памятью (OOM / Heap)
5.1. Проверка выделенной кучи
Посмотрите скрипт запуска: /opt/minecraft/start.sh или параметры systemd ExecStart.
Пример корректных флагов для 8 ГБ RAM (резерв 1-2 ГБ под ОС/Metaspace/CodeCache):
-Xms6G -Xmx6G -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 \
-Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true
Важно: -Xms и -Xmx должны быть одинаковыми. Не выделяйте 100% физической RAM.
5.2. Настройка swap (защита от OOM Killer)
free -h
swapon --show
Если swap нет — создайте 2-4 ГБ:
fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
Настройте swappiness (менее агрессивный своп):
echo 'vm.swappiness=10' >> /etc/sysctl.d/99-minecraft.conf
sysctl --system
5.3. Лимиты файловых дескрипторов
Добавьте в /etc/security/limits.conf:
minecraft soft nofile 100000
minecraft hard nofile 100000
И в systemd юнит (/etc/systemd/system/minecraft-server.service):
[Service]
LimitNOFILE=100000
LimitNPROC=100000
Примените:
systemctl daemon-reload
systemctl restart minecraft-server
6. Диагностика плагинов и модов
6.1. Режим «ванильный» тест
Остановите сервер. Переименуйте папки:
mv /opt/minecraft/plugins /opt/minecraft/plugins_disabled
mv /opt/minecraft/mods /opt/minecraft/mods_disabled
Запустите сервер. Если ошибка исчезла — проблема в аддонах.
6.2. Бинарный поиск виновника
Возвращайте половину плагинов/модов, тестируйте. Повторяйте до выявления конкретного файла.
6.3. Проверка версий ядра (Paper/Spigot/Fabric/Forge)
Убедитесь, что версия сервера совпадает с версией клиентов игроков и версиями плагинов.
java -jar paper-1.20.4.jar --version
Обновите до последнего билда стабильной ветки (например, Paper build #XXX).
6.4. Timings / Spark профилирование
Если сервер запускается, но кикает под нагрузкой:
- Скачайте
spark.jarвplugins/. - В консоли:
/spark profiler start --timeout 60 - Подождите лаги/кик.
/spark profiler stop- Загрузите отчет на
https://spark.lucko.meи анализируйте «Heavy» потоки.
7. MTU, VPN и прокси (BungeeCord / Velocity / TCPShield)
Если игроки подключаются через прокси (Velocity, BungeeCord) или защиту (TCPShield, Cloudflare Spectrum):
- MTU: На сервере Ubuntu проверьте MTU интерфейса (
ip link show eth0). Стандарт 1500. В туннелях (WireGuard, GRE) часто нужно 1420-1460.
Добавьте вip link set dev eth0 mtu 1450/etc/network/interfacesили netplan для постоянства. - Proxy Protocol: Если используете Velocity/BungeeCord за TCPShield/HAProxy — включите
proxy-protocol: trueвvelocity.toml/config.ymlи настройтеserver-ip=0.0.0.0на бэкенде. Без этого бэкенд видит IP прокси и резает соединения при несовпадении. - BungeeCord
connection_throttle: Вconfig.ymlбекенда (Paper/Spigot) выставьте:settings: bungeecord: true connection-throttle: 4000 timeout-time: 60
8. Java версия и флаги
8.1. Соответствие версии
| Minecraft | Java |
|---|---|
| 1.17 - 1.20.4 | Java 17 (LTS) |
| 1.20.5+ | Java 21 (LTS) |
| 1.16.5 и ниже | Java 8 / 11 |
Проверка:
java -version
Установка нужной версии (Ubuntu 22.04/24.04):
apt update && apt install -y openjdk-1
Комментарии (0)