AviaSkins.Forums

Вернуться   AviaSkins.Forums > Основные разделы > Ил-2 Штурмовик: Забытые Сражения > Обновления

Важная информация

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.02.2017, 21:25   #1
I-153
Пользователь
 
Регистрация: 27.04.2015
Сообщений: 70
По умолчанию

Просьба исправить ошибку в выделенном сервере. Ошибка была замечена не только в 4.13.3, но и в более ранних версиях.

Для повторения ошибки необходимо выполнить следующие действия.

Берется стандартный выделенный сервер версии 4.13.3m. В файл server.cmd дописывается строчка "f user.cmd". Создается файл user.cmd следующего содержания:
Код:
user
timeout 1 f user.cmd
Приблизительно через час сервер зависает, отображая при этом:
Код:
[5:16:01 PM]	>user
[5:16:01 PM]	 N       Name           Ping    Score   Army        Aircraft
[5:16:01 PM]	>timeout 1 f user.cmd
[5:16:02 PM]	>user
[5:16:02 PM]	java.lang.StackOverflowError
[5:16:02 PM]		at java.lang.String.compareTo(Unknown Source)
[5:16:02 PM]		at java.util.TreeMap.compare(Unknown Source)
[5:16:02 PM]		at java.util.TreeMap.getEntry(Unknown Source)
[5:16:02 PM]		at java.util.TreeMap.get(Unknown Source)
[5:16:02 PM]		at com.maddox.rts.CmdEnv.atom(CmdEnv.java:374)
[5:16:02 PM]		at com.maddox.rts.CmdEnv.atom(CmdEnv.java:380)
[5:16:02 PM]		at com.maddox.rts.CmdEnv.atom(CmdEnv.java:380)
[5:16:02 PM]		at com.maddox.rts.CmdEnv.atom(CmdEnv.java:380)
[5:16:02 PM]		at com.maddox.rts.CmdEnv.atom(CmdEnv.java:380)
[5:16:02 PM]		at com.maddox.rts.CmdEnv.atom(CmdEnv.java:380)
[5:16:02 PM]		at com.maddox.rts.CmdEnv.atom(CmdEnv.java:380)
[5:16:02 PM]		at com.maddox.rts.CmdEnv.atom(CmdEnv.java:380)
[5:16:02 PM]		at com.maddox.rts.CmdEnv.atom(CmdEnv.java:380)
[5:16:02 PM]		at com.maddox.rts.CmdEnv.atom(CmdEnv.java:380)
[5:16:02 PM]		at com.maddox.rts.CmdEnv.atom(CmdEnv.java:380)
[5:16:02 PM]		at com.maddox.rts.CmdEnv.atom(CmdEnv.java:380)
[5:16:02 PM]		at com.maddox.rts.CmdEnv.atom(CmdEnv.java:380)
[5:16:02 PM]		at com.maddox.rts.CmdEnv.atom(CmdEnv.java:380)
[5:16:02 PM]		at com.maddox.rts.CmdEnv.atom(CmdEnv.java:380)
[5:16:02 PM]		at com.maddox.rts.CmdEnv.atom(CmdEnv.java:380)
[5:16:02 PM]		at com.maddox.rts.CmdEnv.atom(CmdEnv.java:380)
[5:16:02 PM]		at com.maddox.rts.CmdEnv.atom(CmdEnv.java:380)
__________________
I-153 вне форума   Ответить с цитированием
Старый 14.02.2017, 21:23   #2
yt2
Местный
 
Регистрация: 18.01.2012
Сообщений: 814
По умолчанию

Ну не сильно я спец по серверам, но всёж.

В стандартном server.cmd так
Цитата:
...
mission LOAD net/dogfight/1/1454757710.mis BEGIN
f gc.cmd
где вызывается доп скрипт gc.cmd

сам gs.cmd
Цитата:
GC
GC
GC
timeout 3600000 f gc.cmd
где цифра 3600000 это периодичность выполнения этого скрипта.
т.е. он как бы сам себя запускает с заданным интервалом. При его выполнение выполняются команды GC по очистке памяти (сборка мусора)
За точное дефолтное значение периодичности не ручаюсь, не помню сколько там по-дефолту стояла цифра.

т.е timeout 1 - это очень часто скрипт сам себя вызывает. И происходит ли при этом вызов стандартных команд сборки мусора? Т.е. происходит ли за время работы сервера вот подобные сообщения об очистке
Цитата:
1>f gc.cmd
>GC
Memory: total(21430272) free(1219280)
>GC
Memory: total(21168128) free(1154160)
>GC
Memory: total(21168128) free(1153744)
>timeout 3600000 f gc.cmd

Последний раз редактировалось yt2; 14.02.2017 в 21:36.
yt2 вне форума   Ответить с цитированием
Старый 14.02.2017, 22:42   #3
NB79
Местный
 
Регистрация: 12.07.2015
Сообщений: 417
По умолчанию

Дёргать каждую миллисекунду сборщик мусора - это очень жестко для явы. Даже раз в минуту не особенно нужно, раз в десять минут вполне нормально для Ила даже при большом кол-ве людей на сервере и насыщенной карте.

Вообще, для Ила очень нехорошо часто вызывать скрипты и грузить консоль командами, особенно запрашивая стату и проч. объёмные вещи. Верный путь к переполнению стека. Не всё в движке потокобезопасное и не всё отвечает быстро, код сложный и местами не быстрый. Ещё надо не забывать, что RT у Ила древнючий, что тоже ситуацию не улучшает.
NB79 вне форума   Ответить с цитированием
Старый 15.02.2017, 00:43   #4
Sita.
Местный
 
Регистрация: 12.04.2009
Сообщений: 5,106
По умолчанию

Цитата:
Сообщение от NB79 Посмотреть сообщение
Дёргать каждую миллисекунду сборщик мусора - это очень жестко для явы. Даже раз в минуту не особенно нужно, раз в десять минут вполне нормально для Ила даже при большом кол-ве людей на сервере и насыщенной карте.

Вообще, для Ила очень нехорошо часто вызывать скрипты и грузить консоль командами, особенно запрашивая стату и проч. объёмные вещи. Верный путь к переполнению стека. Не всё в движке потокобезопасное и не всё отвечает быстро, код сложный и местами не быстрый. Ещё надо не забывать, что RT у Ила древнючий, что тоже ситуацию не улучшает.
Какие Гости! Рад видеть!
__________________
ищется идейный Программер )
Sita. вне форума   Ответить с цитированием
Старый 15.02.2017, 01:47   #5
NB79
Местный
 
Регистрация: 12.07.2015
Сообщений: 417
По умолчанию

Цитата:
Сообщение от Sita. Посмотреть сообщение
Какие Гости! Рад видеть!
Спасибо! Я заглядываю регулярно новости отследить.
NB79 вне форума   Ответить с цитированием
Старый 14.02.2017, 23:51   #6
I-153
Пользователь
 
Регистрация: 27.04.2015
Сообщений: 70
По умолчанию

Цитата:
Сообщение от yt2 Посмотреть сообщение
т.е timeout 1 - это очень часто скрипт сам себя вызывает. И происходит ли при этом вызов стандартных команд сборки мусора? Т.е. происходит ли за время работы сервера вот подобные сообщения об очистке
Можно поставить и большее значение (10-20 секунд), но тогда до зависания сервера придется ждать несколько дней. При этом сборщик мусора выполняется каждый час (GC), но это не помогает. 1 миллисекунду я указал, чтобы было удобнее повторить ошибку.

Цитата:
Сообщение от NB79 Посмотреть сообщение
Вообще, для Ила очень нехорошо часто вызывать скрипты и грузить консоль командами, особенно запрашивая стату и проч. объёмные вещи.
Но почему эта ошибка не возникает при отправки тех же самых команд коммандером?
__________________
I-153 вне форума   Ответить с цитированием
Старый 15.02.2017, 01:46   #7
NB79
Местный
 
Регистрация: 12.07.2015
Сообщений: 417
По умолчанию

Цитата:
Сообщение от I-153 Посмотреть сообщение
Но почему эта ошибка не возникает при отправки тех же самых команд коммандером?
В былые времена, когда сервера были забиты под завязку, и на картах с высокой интенсивностью событий на малой площади, стек переполнялся тока так. Особенно, если на сервере были люди с дерьмовой связью. Потери пакетов генерили ошибки, которые вызывали раскрутку стека для дампа в лог. И когда при этом летела межпоточная синхронизация сервер моментом вставал колом. Тут многое от, кажем так, удачи зависело. Карта могла два часа отработать, а могла и через 10-15 минут вызвать переполнение стека.

В случае со скриптами надо смотреть что он делает. Вполне может быть так, что от что-то долгоиграющее дёргает, тяжелое. А может там просто рекурсия где-то получается, тоже очень похоже на это.
NB79 вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 04:16. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Рейтинг@Mail.ru