Minecraft сервер лагает: DDoS или проблемы сервера?
Лаги - это ещё не DDoS
Каждый раз, когда сервер начинает тормозить, первая мысль - "нас ддосят". В 80% случаев это не так. Чаще всего причина банальная: криво настроенный плагин, нехватка RAM, или мир, который весит 15 ГБ и грузит чанки со скоростью дискеты.
Проблема в том, что симптомы DDoS и серверных лагов бывают очень похожи. Игроки видят одно и то же - "сервер лагает". Но причины разные, и лечить их нужно по-разному.
Давай пройдём по конкретным шагам и разберёмся, что именно происходит с твоим сервером.
Шаг 1: Проверь TPS
TPS (Ticks Per Second) - это пульс сервера. Нормальное значение - 20. Если ниже - сервер не справляется с обработкой игровой логики.
В консоли Minecraft:
/tps
Или если стоит Spark:
/spark tps
Что означают цифры:
- 20.0 - всё идеально, проблема не в игровой логике
- 15-19 - небольшие просадки, терпимо
- 10-15 - заметные лаги, что-то жрёт ресурсы
- Ниже 10 - сервер захлёбывается
Вот что важно. Если TPS низкий (ниже 15), скорее всего проблема в самом сервере, не в атаке. DDoS-атаки обычно не роняют TPS, потому что атака идёт на сетевом уровне. Сервер может иметь идеальные 20 TPS, но игроки всё равно не могут подключиться, потому что канал забит.
Если TPS 20, но лаги есть - это подозрительно. Скорее всего проблема сетевая: либо DDoS, либо проблемы у хостера с сетью.
Шаг 2: Смотрим CPU и RAM
Зайди на сервер по SSH и проверь нагрузку:
htop
Или если htop не установлен:
top -c
На что смотреть:
- CPU 80-100% на процессе Java - сервер перегружен, TPS скорее всего тоже низкий. Это серверная проблема.
- RAM используется на 90%+ - если Java упирается в лимит памяти, начинается GC (garbage collection), и сервер фризит на секунды. Это одна из самых частых причин "лагов".
- CPU в норме, RAM в норме, но лаги есть - значит проблема не в вычислительных ресурсах. Копаем дальше.
Типичный вывод htop при нормальной нагрузке:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 minecraft 20 0 8.2g 4.1g 12340 S 45.0 52.0 5:23.41 java -Xmx6G -jar paper.jar
45% CPU, 52% RAM - всё нормально, ресурсы есть. Если при этом лагает, ищи причину в другом месте.
Шаг 3: Проверяем сеть
Вот тут начинается самое интересное. Сетевые проблемы бывают двух видов: "нас ддосят" и "у хостера что-то сломалось".
Количество соединений:
netstat -an | grep :25565 | wc -l
Или если у тебя несколько портов:
ss -s
Нормальные цифры: если на сервере 50 игроков, должно быть примерно 50-70 соединений на порт сервера. Ну может 100, если кто-то переподключается.
Подозрительные цифры: 500+ соединений при 30 игроках онлайн - что-то не так. 2000+ - почти наверняка атака.
Проверяем трафик в реальном времени:
iftop -i eth0
Если iftop не установлен:
apt install iftop
Нормальный Minecraft сервер с 50 игроками потребляет 5-15 Мбит/с. Если видишь 100+ Мбит/с, а игроков 20, это ненормально.
Быстрая проверка входящего трафика:
cat /proc/net/dev | grep eth0
Запусти два раза с интервалом в 10 секунд и посчитай разницу в байтах. Или используй vnstat если он стоит:
vnstat -l -i eth0
Шаг 4: Определяем тип проблемы
Теперь у тебя есть данные. Давай поставим диагноз.
Это серверная проблема, если:
- TPS ниже 15
- CPU загружен на 80%+
- В логах ошибки плагинов или "Can't keep up!"
- Лаги пропадают, когда игроков мало (ночью, например)
- Лаги начались после обновления плагина/мира
netstatпоказывает нормальное количество соединений- Трафик в пределах нормы
Это DDoS, если:
- TPS нормальный (18-20), но игроки не могут зайти
- Сотни или тысячи соединений в
netstat - Трафик 100+ Мбит/с при малом количестве игроков
- Хостер прислал уведомление об аномальном трафике
- Не можешь подключиться по SSH (канал забит)
- В логах сотни "Player connected" и "Player disconnected" за секунды
- Проблема появилась резко, без каких-либо изменений на сервере
Это проблема сети хостера, если:
- TPS нормальный
- CPU и RAM в норме
- Трафик в норме
- Соединений нормальное количество
- Но у игроков пинг 200+ или потеря пакетов
- Проблема у всех игроков одновременно
Серверные проблемы, которые маскируются под DDoS
Есть несколько типичных ситуаций, когда кажется что "ддосят", а на самом деле виноват сервер.
Garbage Collection спайки
Когда Java решает почистить память, сервер может зависнуть на 1-5 секунд. Для игроков это выглядит как резкий фриз, потом всё нормально, потом опять фриз.
Добавь в параметры запуска:
-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200
И проверь, что Xmx не больше 10-12 ГБ. Чем больше RAM выделено, тем дольше GC пауза.
Если используешь Spark, посмотри GC статистику:
/spark gc
Тяжёлые плагины
Один криво написанный плагин может положить весь сервер. Классика - плагин, который каждый тик делает SQL запрос или сканирует все сущности.
Профилирование через Spark:
/spark profiler start
Подожди 2-3 минуты, потом:
/spark profiler stop
Spark покажет, какой плагин жрёт больше всего тиков. Если какой-то плагин занимает 40%+ - вот твоя проблема.
Загрузка чанков
Когда много игроков разбегаются по миру, серверу приходится генерировать и подгружать чанки. На HDD это медленно, на SSD - терпимо, но всё равно может вызывать просадки.
Решение - прегенерация мира:
/chunky radius 5000
/chunky start
И обязательно проверь, что сервер стоит на SSD. В 2026 году запускать Minecraft на HDD - это мазохизм.
MySQL лаги
Если плагины используют MySQL и база на том же сервере, при больших запросах может лагать весь сервер. Проверяем:
mysqladmin -u root -p processlist
Если видишь запросы, которые висят по 10-30 секунд, проблема в базе. Оптимизируй запросы, добавь индексы, или вынеси базу на отдельный сервер.
Повреждённый мир
Иногда конкретный регион мира повреждён. Когда игрок заходит в этот чанк, сервер начинает тупить. Симптомы - лаги появляются только когда определённый игрок в определённом месте.
Проверь логи на ошибки загрузки чанков и попробуй удалить проблемный регион файл из world/region/.
Инструменты для диагностики
Вот набор тулзов, которые должны быть на каждом Minecraft сервере:
Внутри Minecraft:
- Spark - must have плагин. Профилирование, TPS, GC, memory. Ставь его первым делом.
- Timings (встроен в Paper) -
/timings on, потом/timings report. Покажет что тормозит.
На сервере (Linux):
- htop - смотрим CPU и RAM.
apt install htop - iftop - трафик в реальном времени.
apt install iftop - vnstat - статистика трафика за время.
apt install vnstat - ss / netstat - сетевые соединения
- iostat - нагрузка на диск.
apt install sysstat
Для глубокой диагностики сети:
tcpdump -i eth0 port 25565 -c 100 -nn
Это покажет первые 100 пакетов на порт сервера. Если видишь кучу SYN пакетов с разных IP без ACK - это SYN flood.
netstat -an | grep :25565 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -20
Эта команда покажет топ-20 IP адресов по количеству подключений. Если один IP имеет 200+ соединений, это или бот, или кто-то ломится.
Пошаговый алгоритм диагностики
Когда сервер залагал, действуй по порядку:
1. Проверь TPS - /tps или /spark tps
- Низкий? Иди к шагу 2А
- Нормальный (18+)? Иди к шагу 2Б
2А. TPS низкий - серверная проблема:
- Проверь CPU/RAM через
htop - Запусти
/spark profilerна 2-3 минуты - Посмотри что жрёт ресурсы
- Проверь логи на ошибки
2Б. TPS нормальный - сетевая проблема:
- Проверь количество соединений:
netstat -an | grep :25565 | wc -l - Проверь трафик:
iftop -i eth0 - Много соединений (500+)? Скорее всего DDoS.
- Трафик зашкаливает? Скорее всего DDoS.
- Всё в норме? Проблема у хостера, пиши в саппорт.
3. Подтверждаем DDoS:
- Смотрим топ IP:
netstat -an | grep :25565 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -20 - Проверяем логи Minecraft на массовые подключения
- Смотрим уведомления от хостера
Что делать, когда определил проблему
Если это серверные лаги:
- Обнови ядро. Paper, Purpur, Folia - в каждом обновлении фиксят производительность.
- Оптимизируй server.properties и config.
view-distance: 6-8вместо 10,simulation-distance: 4-6. - Вычисли проблемный плагин. Spark профилирование - твой лучший друг.
- Прегенерируй мир. Chunky решает проблему загрузки чанков.
- Добавь RAM, но не больше 10-12 ГБ. Больше - дольше GC паузы.
- Перейди на SSD, если ещё на HDD.
Если это DDoS:
Тут всё серьёзнее. iptables правила помогут от мелких атак, но от серьёзного ддоса на 10+ Гбит/с - нет.
- Включи whitelist как временную меру.
- Не меняй порт - это бесполезно.
- Если у хостера есть базовая защита - включи. Иногда помогает.
- Для постоянной защиты нужен reverse proxy, который фильтрует Minecraft трафик. Сервисы вроде MineGuard анализируют протокол Minecraft и отсеивают ботов на уровне приложения, а не просто по IP.
- Скрой реальный IP после настройки защиты. Если атакующий знает настоящий IP, он обойдёт любой прокси.
Если проблема у хостера:
- Пиши в саппорт с конкретными данными: "TPS 20, CPU 30%, но у игроков пинг 300мс и потери пакетов 20%".
- Попроси проверить сеть и маршрутизацию.
- Если хостер не решает проблему, меняй хостера. Серьёзно.
Реальный пример из логов
Вот так выглядит лог сервера во время бот-атаки:
[12:34:56] [Server thread/INFO]: Player392 (/185.23.xx.xx:54321) logged in
[12:34:56] [Server thread/INFO]: Player392 left the game
[12:34:56] [Server thread/INFO]: Player847 (/91.108.xx.xx:12345) logged in
[12:34:56] [Server thread/INFO]: Player847 left the game
[12:34:57] [Server thread/INFO]: Player103 (/45.67.xx.xx:33210) logged in
[12:34:57] [Server thread/INFO]: Player103 left the game
[12:34:57] [Server thread/INFO]: Player556 (/103.28.xx.xx:44123) logged in
[12:34:57] [Server thread/INFO]: Player556 left the game
Десятки подключений в секунду, разные IP, зашли-вышли мгновенно. Это L7 бот-атака.
А вот так выглядит серверный лаг:
[12:34:56] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 4523ms or 70 ticks behind
[12:34:58] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 6102ms or 102 ticks behind
"Can't keep up" - это всегда серверная проблема, не DDoS. Сервер не успевает обрабатывать тики.
И вот GC пауза:
[12:35:01] [GC Thread] GC pause (G1 Evacuation Pause) 6144M->3072M(8192M) 847.23ms
847 миллисекунд фриз из-за сборки мусора. Если такие паузы частые, уменьши Xmx или оптимизируй параметры GC.
Итого
Не каждый лаг - это DDoS. Прежде чем паниковать, потрать 5 минут на диагностику. Проверь TPS, CPU, RAM, сеть. В большинстве случаев причина окажется банальной - тяжёлый плагин, нехватка ресурсов, или повреждённый мир.
Если же это действительно атака, то iptables костыли не спасут от чего-то серьёзного. Нужна нормальная защита с фильтрацией на уровне протокола, как у MineGuard, или свой настроенный прокси, если хватает экспертизы. Главное - не забудь скрыть реальный IP, иначе всё остальное бесполезно.
Proteja Seu Servidor de Ataques DDoS
Proteção gratuita com configuração em 5 minutos. 1 TB de tráfego incluso.
Experimentar GrátisArtigos Relacionados
Towny: SMP сервер с городами и нациями, полный гайд
Полная настройка Towny на Paper 1.20-1.21: команды, townyperms.yml, налоги, войны через SiegeWar, карта, LuckPerms и анти-гриф.
Лаги на Minecraft сервере: причины и как их устранить
Разбираем причины лагов на Minecraft сервере: TPS, профайлинг через spark, оптимизация чанков, сущностей, редстоуна, настройка JVM флагов Aikar и Paper. Практические примеры конфигов.
Whitelist vs Online Mode в Minecraft - что безопаснее?
Разбираем разницу между whitelist и online-mode: как работает аутентификация Mojang, зачем нужен UUID, чем опасны cracked серверы, как защитить offline-сервер через AuthMe и зачем комбинировать оба механизма.