Зависание сервера
#1

Всем привет. Возникла такая не очень понятная проблема. Сервер работал и ни с того ни с сего "завис". То есть сервер работает дальше, но приконнектиться к нему нельзя, коннект останавливается на месте:
Quote:

Connected. Joining the game...

Дальше ничего не происходит. Те игроки, что играли в момент повиса висели в списке игроков, хотя и не играли. Сервер пингуется, ркон команды работают, кроме gmx, exit, changemode. Подгружал ФС:
Quote:

public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
GameModeExit();
SendRconCommand("gmx");
SendRconCommand("exit");
return 1;
}

Принт выводится, дальше ничего. Сервер стоит на винде. Раньше такое изредка было, но там были проблемы на стороне хостинга, я бы так и дальше считал, если бы не вчерашние некоторые обновления, хотя возможно совпадение. Читал англ. раздел, находил топики с проблемой этой, вразумительных ответов не нашёл, кто-то писал, что после кика игроков восстановится, кикнул - ничего не поменялось. Поэтому у меня 2 вопроса возникло:
1. Из-за чего может возникнуть такой повис?
2. Как нибудь можно его убрать, если, кроме FTP и собственной ркон панели ничего не имеется?
Заранее спасибо.
Reply
#2

скорее всего бесконечный цикл в моде
на всякий случай гляньте логи
Reply
#3

в логи ничего не пишется, при чьем-то коннекте
[30:07:2012 15:26:09] Incoming connection: 128.69.29.19:55383
и всё. Ркон команды работают, но без exit, непонятно почему. Подгрузил ФС с функцией SetWorldTime - работает, запустил в нём таймер - не работает.
SendRconCommand("weather 3"); - работает
SendRconCommand("exit"); - не работает
Reply
#4

У тебя зацикливается скрипт.
RCON работает в отдельном потоке, поэтому ему не страшно.
exit и gmx не работают потому что их вызов требует выполнения OnGameModeExit(), а его вызов встает в общую очередь, которая не двигается из-за ранее зацикленного кода.
Reply
#5

Stepashka, спасибо. Я так понимаю, что выключить/перезагрузить сервер не выйдет никак, кроме закрытия самого окна сервера?
Может есть вариант крашнуть его? например открытием несуществующего файла (раньше крашилось вроде)
Reply
#6

Quote:
Originally Posted by RoAChik
View Post
Stepashka, спасибо. Я так понимаю, что выключить/перезагрузить сервер не выйдет никак, кроме закрытия самого окна сервера?
Может есть вариант крашнуть его? например открытием несуществующего файла (раньше крашилось вроде)
Вы поймите, что у вас основной поток сервера, застопорился, вероятно, ожидая выполнения цикла(а может из за рекурсии, не важно), ищите где, открытие несуществующего файла встанет в ту же очередь, которая скопилась и ждет выполнения цикла.
Reply
#7

SetWorldTime(5); - работает. Или он тоже к рконовскому потоку относится? В любом случае ты прав, до открытия файла не доходит... Найти и поправить это я всегда успею, сейчас мне нужно как-то положить сервер.
Reply
#8

Только убить процесс.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)