Ошибка при авторестарте сервера в 5 утра

damka

Heir
Customer
Всем привет уважаемые форумчане!


Регулярно(не всегда,но иногда,например сегодня раз за 5 дней) при авторестарте сервера в 5 утра , в логин сервере получаю такой лог :
[05:01:56] INFO Gameserver registration successful.
[05:00:00] INFO Connection with gameserver 1 [Main x100] lost.
[05:00:00] INFO Setting gameserver down. All proxies will be down as well.
[05:01:39] INFO Trying to register gameserver: 1 [152.53.125.216]
[05:01:39] INFO Gameserver registration successful.
[05:00:00] INFO Connection with gameserver 1 [Main x100] lost.
[05:00:00] INFO Setting gameserver down. All proxies will be down as well.
[05:01:38] INFO Trying to register gameserver: 1 [152.53.125.216]
[05:01:38] INFO Gameserver registration successful.
[05:00:00] INFO Connection with gameserver 1 [Main x100] lost.
[05:00:00] INFO Setting gameserver down. All proxies will be down as well.
[05:01:36] INFO Trying to register gameserver: 1 [152.53.125.216]
[05:01:36] INFO Gameserver registration successful.
[01:38:11] ERROR Gameserver I/O error: Incorrect packet size: <= 2
[01:38:11] ERROR Gameserver I/O error: Incorrect packet size: <= 2
[01:38:35] ERROR
java.nio.BufferUnderflowException: null
at java.base/java.nio.Buffer.nextGetIndex(Buffer.java:707)
at java.base/java.nio.HeapByteBuffer.getInt(HeapByteBuffer.java:435)
at l2.commons.net.nio.ReceivablePacket.readD(Unknown Source)
at l2.authserver.network.gamecomm.gs2as.AuthRequest.readImpl(Unknown Source)
at l2.authserver.network.gamecomm.ReceivablePacket.read(Unknown Source)
at l2.authserver.network.gamecomm.GameServerCommunication.tryReadPacket(Unknown Source)
at l2.authserver.network.gamecomm.GameServerCommunication.read(Unknown Source)
at l2.authserver.network.gamecomm.GameServerCommunication.run(Unknown Source)
[01:38:35] ERROR Gameserver I/O error: Incorrect packet size: <= 2
[01:38:35] INFO Trying to register gameserver: 0 [51.195.190.33]
[01:38:35] ERROR
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "<parameter1>" is null
at l2.authserver.network.gamecomm.GameServer.setExternalHost(Unknown Source)
at l2.authserver.network.gamecomm.gs2as.AuthRequest.runImpl(Unknown Source)
at l2.authserver.network.gamecomm.ReceivablePacket.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
[05:00:00] INFO Connection with gameserver 1 [Main x100] lost.
[05:00:00] INFO Setting gameserver down. All proxies will be down as well.
[05:01:37] INFO Trying to register gameserver: 1 [152.53.125.216]
[05:01:37] INFO Gameserver registration successful.



Как можно увидеть с лога , что то со считыванием пакетов ,но в конце концов ,гейм сервер был успешно зарегистрирован.

Но суть нюанса в том ,что после такой успешной "регистрации" , в клиенте ,не пускает дальше соглашения с правилами сервера(не отображается список гейм серверов), а в консоли логин сервера появляются следующие ошибки :

[05:52:11] ERROR
java.lang.NullPointerException: Cannot read the array length because "<local1>" is null
at l2.authserver.network.gamecomm.GameServer.getPort(Unknown Source)
at l2.authserver.network.l2.s2c.ServerList.<init>(Unknown Source)
at l2.authserver.network.l2.c2s.RequestServerList.runImpl(Unknown Source)
at l2.authserver.network.l2.c2s.L2LoginClientPacket.run(Unknown Source)
at l2.commons.net.nio.impl.MMOExecutableQueue.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)

1 клик по кнопке " принять правила сервера " = один такой лог

После перезапуска сервера "ручками" все исправляется

Возможно кто то сталкивался? Может ли это быть проблемой интернет-соединения на хосте?
 
Если тебя не пускает дальше выбора сервера, то проблема с портом.
Но тут по ходу другое. Не могу сообразить, почему у тебя пытается зарегать сервер на 2 разных ip ?
сначала он дергает один, потом вообще другой. Может проблема в этом ?
 
GameServer.getPort(Unknown Source)

не может получить порт, с большой долей вероятностью криво настроен фаервол и биндит порт в какой то из моментов
 
Если тебя не пускает дальше выбора сервера, то проблема с портом.
Но тут по ходу другое. Не могу сообразить, почему у тебя пытается зарегать сервер на 2 разных ip ?
сначала он дергает один, потом вообще другой. Может проблема в этом ?
В логе не увидел 2 разных ИП ,тык пальцем плз,но я пересмотрю
 
GameServer.getPort(Unknown Source)

не может получить порт, с большой долей вероятностью криво настроен фаервол и биндит порт в какой то из моментов
Понял буду копать в данном направлении,но порты все открыты ,и такое случается не каждый раз ,а раз в несколько дней ,данный случай -раз за 5 дней

В сторону фаервола на хосте покопаюсь
 
В логе не увидел 2 разных ИП ,тык пальцем плз,но я пересмотрю
1743534507355.webp

Один от Anexia второй от овх :)
=-=-=-=-=-=-=-=

не думаю что у тебя фаервол живет своей жизнью, особенно от провайдера. Он либо работает либо нет - полубеременных не существует :)
 
View attachment 5677

Один от Anexia второй от овх :)
=-=-=-=-=-=-=-=

не думаю что у тебя фаервол живет своей жизнью, особенно от провайдера. Он либо работает либо нет - полубеременных не существует :)
Ага увидел,да интересно ,понял спасибо за ответы буду глсдеть,особенно откуда взялся 2 ип
 
Ага увидел,да интересно ,понял спасибо за ответы буду глсдеть,особенно откуда взялся 2 ип
может ГС обращается к ЛС не по ип а по имени? и есть 2 днс записи с одинаковым именем?
 
может ГС обращается к ЛС не по ип а по имени? и есть 2 днс записи с одинаковым именем?
разве в настройках файла authserver можно прописать домен в место ip ?
Я пробовал давно так сделать, но всегда были ошибки.
 
Всем привет уважаемые форумчане!


Регулярно(не всегда,но иногда,например сегодня раз за 5 дней) при авторестарте сервера в 5 утра , в логин сервере получаю такой лог :
[05:01:56] INFO Gameserver registration successful.
[05:00:00] INFO Connection with gameserver 1 [Main x100] lost.
[05:00:00] INFO Setting gameserver down. All proxies will be down as well.
[05:01:39] INFO Trying to register gameserver: 1 [152.53.125.216]
[05:01:39] INFO Gameserver registration successful.
[05:00:00] INFO Connection with gameserver 1 [Main x100] lost.
[05:00:00] INFO Setting gameserver down. All proxies will be down as well.
[05:01:38] INFO Trying to register gameserver: 1 [152.53.125.216]
[05:01:38] INFO Gameserver registration successful.
[05:00:00] INFO Connection with gameserver 1 [Main x100] lost.
[05:00:00] INFO Setting gameserver down. All proxies will be down as well.
[05:01:36] INFO Trying to register gameserver: 1 [152.53.125.216]
[05:01:36] INFO Gameserver registration successful.
[01:38:11] ERROR Gameserver I/O error: Incorrect packet size: <= 2
[01:38:11] ERROR Gameserver I/O error: Incorrect packet size: <= 2
[01:38:35] ERROR
java.nio.BufferUnderflowException: null
at java.base/java.nio.Buffer.nextGetIndex(Buffer.java:707)
at java.base/java.nio.HeapByteBuffer.getInt(HeapByteBuffer.java:435)
at l2.commons.net.nio.ReceivablePacket.readD(Unknown Source)
at l2.authserver.network.gamecomm.gs2as.AuthRequest.readImpl(Unknown Source)
at l2.authserver.network.gamecomm.ReceivablePacket.read(Unknown Source)
at l2.authserver.network.gamecomm.GameServerCommunication.tryReadPacket(Unknown Source)
at l2.authserver.network.gamecomm.GameServerCommunication.read(Unknown Source)
at l2.authserver.network.gamecomm.GameServerCommunication.run(Unknown Source)
[01:38:35] ERROR Gameserver I/O error: Incorrect packet size: <= 2
[01:38:35] INFO Trying to register gameserver: 0 [51.195.190.33]
[01:38:35] ERROR
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "<parameter1>" is null
at l2.authserver.network.gamecomm.GameServer.setExternalHost(Unknown Source)
at l2.authserver.network.gamecomm.gs2as.AuthRequest.runImpl(Unknown Source)
at l2.authserver.network.gamecomm.ReceivablePacket.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
[05:00:00] INFO Connection with gameserver 1 [Main x100] lost.
[05:00:00] INFO Setting gameserver down. All proxies will be down as well.
[05:01:37] INFO Trying to register gameserver: 1 [152.53.125.216]
[05:01:37] INFO Gameserver registration successful.



Как можно увидеть с лога , что то со считыванием пакетов ,но в конце концов ,гейм сервер был успешно зарегистрирован.

Но суть нюанса в том ,что после такой успешной "регистрации" , в клиенте ,не пускает дальше соглашения с правилами сервера(не отображается список гейм серверов), а в консоли логин сервера появляются следующие ошибки :

[05:52:11] ERROR
java.lang.NullPointerException: Cannot read the array length because "<local1>" is null
at l2.authserver.network.gamecomm.GameServer.getPort(Unknown Source)
at l2.authserver.network.l2.s2c.ServerList.<init>(Unknown Source)
at l2.authserver.network.l2.c2s.RequestServerList.runImpl(Unknown Source)
at l2.authserver.network.l2.c2s.L2LoginClientPacket.run(Unknown Source)
at l2.commons.net.nio.impl.MMOExecutableQueue.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)

1 клик по кнопке " принять правила сервера " = один такой лог

После перезапуска сервера "ручками" все исправляется

Возможно кто то сталкивался? Может ли это быть проблемой интернет-соединения на хосте?
Конфиги скинь. У тебя где-то срань в конфигах) там где ip настраиваются и порты
 
А теперь к интересному . У меня аут и гейм сервера лежат в одной папке,и всегда открываю через вс студию для удобства .
ИП моего хоста(152.53....) видите на 1 скриншоте,это поиск по файлам.

На 2-ом этот 2-ой ип нигде не прописан.

У меня куплен домен,и все запросы переводятся на 152.53.... на разные порты : апи ,сервер, сайт ,все на одном хосте.

Есть смысл грешить на хостинг?



1743593471333.webp

1743593648367.webp
 
Конфиги скинь. У тебя где-то срань в конфигах) там где ip настраиваются и порты
там все как раз таки как надо настроено ,и фишка что 2 этого ип адреса нифига нету нигде вообще в конфигах ,такая история
 
ок вот конфиги

Аут сервер :

# ================================================================
# Настройки сервера авторизации
# ================================================================
# Внешний адрес вашей физической сетевой карты
# Хост и порт для клиентских соединений
LoginserverHostname = 152.53.125.216
LoginserverPort = 2106
# Внутренний адрес для коммуникации игрового сервера с логин сервером - ни как не связан с подключениями игроков
LoginHost = 152.53.125.216
LoginPort = 9014
# Принимать новый игровой сервер в свободный слот
AcceptNewGameServer = True
# ================================================================
# Настройки БД
# ================================================================
# Хост Базы Данных
DatabaseHost = 127.0.0.1
# Порт Базы Данных
DatabasePort = 3306
# Имя Базы Данных
DatabaseName =
# Пользователь Базы Данных
DatabaseUser =
# Пароль к Базы Данных
DatabasePassword =
# Подключений к Базы Данных (больше не имеет смысла ставить - у нас сборка очень редко дергает БД и держит соединение залоченым)
DatabaseMaxConnections = 8
# Время таймаута соединения Базы Данных
DatabaseConnectionTimeout = 30
# Дополнительные настрокий для базы (по умолчанию должно быть пусто)
DatabaseExProperties =
# Система автоматического обновления структуры базы и ее создании при отсутствии
DatabaseStructureManager = True
# Система автоматического создания бекапов
# Пример: * - дампит все таблицы в которых есть данные.
# Если хотите дампить индивидуальные таблицы, перечисляете их в конфиге: DatabaseDumpTables = account_log, accounts, gameservers, и тд
DatabaseDumpTables = *
# Формат и путь куда будет дампить таблицы
DatabaseDumpFilenameFormat = backup/%table_name%_%date%_%time%.sql
# Формат и путь где будет ZIP архив с дампом
DatabaseDumpZipOutFilenameFormat = backup/%date%_%time%.zip
# ================================================================
# Показывать ли Лицензионное Соглашение при входе (EULA)
RequireEULA = True
# Автоматическое создание аккаунтов
AutoCreateAccounts = False
# Шаблон для логина и пароля - больше 14 символов клиент вообще не отправляет на сервер.
AccountTemplate = [A-Za-z0-9]{1,14}
PasswordTemplate = [A-Za-z0-9]{1,16}
# Хаш для паролей
# Актуальное хеширование, рекомендуется whirlpool2
PasswordHash = whirlpool2
# Поддерживаемые устаревшие методы, например sha1 (l2jserver)
LegacyPasswordHash = sha1
# Кеширование ключей
BlowFishKeys = 20
RSAKeyPairs = 10
# Используется если у вас европейский или английский патч
# При установке русского патча рекомендуется False. Идут другие сообщения
EnglishServerSystem = False
# ================================================================
# Метод входа командной строкой
# ================================================================
# Запуск клиента через "account=YourAccount password=YourPassword" параметр.
# Так же необходимо в l2.ini выставить ExternalLogin=true и CmdLineLogin=true
# По умолчанию: False
EnableCmdLineLogin = False
# По умолчанию: False
OnlyCmdLineLogin = False
# ================================================================
# Автобан IP - количество неудачных входов, до бана IP
LoginTryBeforeBan = 10
# Допустимое минимальное время между авторизации с одного IP (в секундах)
LoginTryTimeout = 5
# Время бана IP, если превышено количество неудачных входов (в секундах)
IpBanTime = 300
# Черный лист IP адресов. Сразу будут забанены.
BlackIpList =
# Белый лист IP адресов которые НИКОГДА не будут забанены при попытке брута или перебора
# обязательно добавляйте прокси IP если вы подключаете их
WhiteIpList = 127.0.0.1
# Очистка невалидных подключений после их блокировки (в минутах)
# При сильной DDOS атаке рекомендуется увеличить
# Блокировка выполняется автоматически
BlackListCleanInterval = 10
# ================================================================
# Настройка HaProxy v2
# ================================================================
# Указывается IP адрес физического интерфейса
HAProxyLoginserverHostname =
# Указывается Порт HaProxy
# допустим они переадресовывают с своего порта 2121 на ваш 2106. Тогда тут нужно указать 2121)
# Так же вы должны поставить в LoginserverPort = -1
HAProxyLoginserverPort = -1
# ================================================================
# Логировать успешные входы в БД
LoginLog = true
# Пинг игрового сервера (сверяет коммуникацию, живой ли игровой сервак или его свалили ДДОСом или просто отвалился интерфейс)
# Время между пингами, в секундах, 0 - отключить
GameServerPingDelay = 30
# Максимальное число неудачных попыток пинга, после превышения которого, связь с игровым сервером прерывается
GameServerPingRetry = 4
#-------------------------------------------------------------
# Настройки перезагрузки сервера
#-------------------------------------------------------------
# Ежедневный авторестарт по расписанию. Время рестарта в формате cron.
# Если поле пустое, ежедневный авторестарт отключен.
# Пример рестарта в 5:00 : 0 5 * * *
AutoRestartAt =
 
гейм сервер (там где ип адреса,конекти бд и порты) :

# Сетевые настройки сервера
#-------------------------------------------------------------
# IP на который будет привязан гейм сервер, * - на все возможные
GameserverHostname = *
GameserverPort = 7777
# Это передается на клиентов, которые подключаются от внешней сети, поэтому он должен быть публичным IP или имя хоста
ExternalHostname = 152.53.125.216
# Это передается клиенту из той же сети, поэтому он должен быть локальным IP или имя хоста
InternalHostname = 152.53.125.216
# Адрес\порт логин сервера.
# Используется для коммуникации логин и гейм сервера, если логин и гейм на одном сервере - оставить 127.0.0.1
LoginPort = 9014
LoginHost = 152.53.125.216
LoginUseCrypt = True
# Какой ID запрашивать у логина сервера
RequestServerID = 1
# Разрешать брать другой ид, если запрашиваемый занят
AcceptAlternateID = True
#-------------------------------------------------------------
# Настройки базы данных
#-------------------------------------------------------------
DatabaseHost = 127.0.0.1
DatabasePort = 3306
DatabaseName =
DatabaseUser =
DatabasePassword =
DatabaseMaxConnections = 64
DatabaseConnectionTimeout = 30
# Дополнительные настройки для базы (по умолчанию должно быть пусто)
DatabaseExProperties =
# Система автоматического обновления структуры базы и ее создании при отсутствии
DatabaseStructureManager = True
# Система автоматического создания бекапов
# Пример: * - дампит все таблицы, в которых есть данные.
# Если хотите дампить индивидуальные таблицы, перечисляете их в конфиге: DatabaseDumpTables = characters, items, clan_data, и тд
DatabaseDumpTables = *
# Формат и путь, куда будет дампить таблицы
DatabaseDumpFilenameFormat = backup/%table_name%_%date%_%time%.sql
# Формат и путь где будет ZIP архив с дампом
DatabaseDumpZipOutFilenameFormat = backup/%date%_%time%.zip
#-------------------------------------------------------------
# Авто сохранение состояния чара
Autosave = True
# Авто сохранение предметов
# Default: False (Рекомендуется включать, если есть проблемы с сервером - падает ява, ддос и т.д.)
# Уменьшается время последнего сохранения предметов игроков, уменьшает время так называемого "отката" предметов - но при этом возникает дополнительная нагрузка.
AutosaveWithItems = False
 
# Внутренний адрес для коммуникации игрового сервера с логин сервером - ни как не связан с подключениями игроков
LoginHost = 152.53.125.216
# Это передается клиенту из той же сети, поэтому он должен быть локальным IP или имя хоста
InternalHostname = 152.53.125.216
# Адрес\порт логин сервера.
# Используется для коммуникации логин и гейм сервера, если логин и гейм на одном сервере - оставить 127.0.0.1
LoginPort = 9014
LoginHost = 152.53.125.216

зачем ты гейм и логин заставляешь общаться через интернет если они на одной подсети. поставь 127.0.0.1
 
Внутренний адрес для коммуникации игрового сервера с логин сервером - ни как не связан с подключениями игроков
LoginHost = 152.53.125.216
LoginPort = 9014
Косяк верни локалку ну и в настройках геймсервера тоже
 
Ля действительно ,что то подумал что туда ИП машины надо на которой все запущено... Приогромнейше благодарен,сейчас поменяю,может заодно это и окажется причиной задержек на сервере.... :D буду сейчас розбиратся

И для идиотов же написано "оставить локалку" ахахах хз чем думал спасибо большое!!!
 
Сделал ,лаги на сервере не ушли ,но будем наблюдать что бы ошибка не вылетала снова,если что подниму эту тему,всем спасибо извините если что :D
 
лаги на сервере не ушли
О лагах ты вообще не писал, это уже отдельная история.
Тебе нужно все пересмотреть внимательно заново. Если ты запутался в самом начале, то не могу представить что там дальше :)
 
Back
Top