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

Добрый день, подскажите чем можно вычислить периодическое зависание сервера?
Симптомы зависания:
Все резко уходят в афк.
При попытке перезайти:
Quote:

[16:28:40] SA-MP 0.3.7 Started
[16:28:43] Connecting to xxx...
[16:28:44] Connected. Joining the game...

В логах сервера:
Quote:

[2015-08-29 16:24:28] Kicking 213.87.240.207 because they didn't logon to the game.
[2015-08-29 16:24:29] [connection] 37.150.4.42:38322 requests connection cookie.
[2015-08-29 16:24:31] Kicking 195.218.182.22 because they didn't logon to the game.
[2015-08-29 16:24:31] [connection] 37.54.62.97:54940 requests connection cookie.
[2015-08-29 16:24:32] Kicking 188.232.212.113 because they didn't logon to the game.

В панели ру-хостера на момент зависания бывает
Quote:

CPU 101.9%, RAM 123M

Плагины:
Quote:

mysql r39-2, sscanf, streamer, whirlpool, dc_cmd, regex

Крутил пару дней профилер, там все как и должно быть.
Если сервер зависает, профилер не отрабатывает, крашдетект тоже не ругается.
Reply
#2

У меня также было, помогло только пересоздать систему АФК.
Советую использовать SA-MP callbacks by Emmet
Там есть функций которые можно использовать для AFK системы для примера:
PHP код:
public OnPlayerPause(playerid)
{
    if(
PlayerAFK[playerid][AFK_Stat] == 0)
    {
        
AFK_3DT[playerid] = Create3DTextLabel("{22d708}[AFK] [0]"T_COLOR0,0,0T_DIST0);
        
Attach3DTextLabelToPlayer(AFK_3DT[playerid], playerid0.00.00.3);
        
PlayerAFK[playerid][AFK_Timer] = SetTimerEx("OnPlayerInPauseUpdate"1000true"i"playerid);
        
PlayerAFK[playerid][AFK_Stat] = 1;
        
PlayerAFK[playerid][AFK_Time] = 0;
    }
}
public 
OnPlayerResume(playeridtime)
{
    
PlayerAFK[playerid][AFK_Stat] = 0;
    
PlayerAFK[playerid][AFK_Time] = 0;
    
Delete3DTextLabel(AFK_3DT[playerid]);
    
KillTimer(PlayerAFK[playerid][AFK_Timer]);
}
forward OnPlayerInPauseUpdate(playerid);
public 
OnPlayerInPauseUpdate(playerid)
{
    
PlayerAFK[playerid][AFK_Time]++;
    new 
str[64];
    
format(strsizeof(str), "{22d708}[AFK] [%d]"PlayerAFK[playerid][AFK_Time]);
    
Update3DTextLabelText(AFK_3DT[playerid], T_COLORstr);

Кстати, поставь CrashDetect и все логи сюда.
Reply
#3

Не понимаю к чему тут система афк.
Зависает сам сервер, и зайти на него невозможно до перезагрузки.
Крашдетект перед зависанием ничего не пишет.
Reply
#4

А в логе mysql за этот период что-то есть? У меня такое изредка происходит из-за потери соединения с mysql сервером. Он хоть доступен, но плагин почему-то не может подключиться и сервер фризится (даже кол-во игроков не обновляется).
Reply
#5

Смахивает на бесконечный цикл
Reply
#6

Quote:
Originally Posted by stabker
Посмотреть сообщение
А в логе mysql за этот период что-то есть? У меня такое изредка происходит из-за потери соединения с mysql сервером. Он хоть доступен, но плагин почему-то не может подключиться и сервер фризится (даже кол-во игроков не обновляется).
Ошибок нет в логах мускула.
Если соединения теряется, то идут ошибки + падение сервера.
А тут он фризится, и онлайн тоже фризится.


Quote:
Originally Posted by DartfoL
Посмотреть сообщение
Смахивает на бесконечный цикл
Тогда в server_log.txt ничего не должно писаться же?
Reply
#7

Quote:
Originally Posted by sniper-termit
Посмотреть сообщение
Не понимаю к чему тут система афк.
Зависает сам сервер, и зайти на него невозможно до перезагрузки.
Крашдетект перед зависанием ничего не пишет.
Я лишь написал свой вариант. У меня такое было но там была проблема в AFK
Reply
#8

Quote:
Originally Posted by DartfoL
Посмотреть сообщение
Смахивает на бесконечный цикл
Поддерживаю. ТС, прислушайся)
Reply
#9

Причин на самом деле может быть оочень много. Лично я сталкивался с той, когда игроки могли давать себе любое количество жизней/брони, и превысив некое число, сервер тупо зависал. Исправлял ограничением на вводимое число.
Reply
#10

Quote:
Originally Posted by sniper-termit
Посмотреть сообщение
Тогда в server_log.txt ничего не должно писаться же?
будет писать только сетевой поток, о попытках коннекта
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)