К содержимому
Tickwise
ОшибкаБазы данныхSIG-DB-005

Протухшие соединения с MySQL (The last packet successfully received … milliseconds ago)

Платформы
Paper · Purpur · Velocity · один сервер
Проверено
Проверено
Уверенность
Уверенность 80%

Как это выглядит в логе

Достаточно одной из строк. Агент сверяет их с логом локально, на вашем сервере.

logs/latest.log
  • [WARN] The last packet successfully received from the server was

Симптомы

  • Запросы плагина периодически падают после простоя: CommunicationsException с «The last packet successfully received from the server was N milliseconds ago»

Причина

Драйвер MySQL использовал соединение, которое сервер БД или промежуточная сеть уже закрыли по простою: время жизни соединения в пуле больше wait_timeout БД или idle-таймаута NAT/файрвола.

Вероятные причины

  • maxLifetime пула (HikariCP, по умолчанию 30 мин) больше wait_timeout БД — сервер закрывает простаивающие соединения раньше пула
  • Соединения рвёт NAT/файрвол/прокси БД по idle-таймауту (N заметно меньше wait_timeout)
  • Перезапуск БД или ручное завершение соединений (KILL) во время работы сервера

Как исправитьНизкий риск

  1. Узнайте таймаут БД: SHOW VARIABLES LIKE 'wait_timeout'; (секунды).
  2. В конфиге плагина задайте maxLifetime пула меньше wait_timeout минимум на 30 секунд (для LuckPerms — pool-settings.maximum-lifetime в миллисекундах).
  3. Если между сервером и БД есть NAT/файрвол с коротким idle-таймаутом — включите keepaliveTime пула (например, 60000 мс) и держите maxLifetime ниже этого таймаута.
  4. Не используйте autoReconnect=true как основное решение — пул должен сам заменять старые соединения.

Источники