About CPU Usage
#1

My server is running on Linux, and has been maden in MYSQL.

I don't know why, but when the server reach the 20 players, the CPU up of 8 to 20% of usage.

Does anybody knows what can make that?

And, if yes, what can I do to solve this problem?


Thanks for the reply's.

(The host is Volt host )
Reply
#2

The CPU load is mostly an average value out of several minutes. Are you sure it really jumps in the moment player number 20 joins?

If yes, it is probably some script problem. Hard to say what exactly causes this, but it is probably a loop in a timer or in OnPlayerUpdate with some strange ranges or conditions.

Another reason might be, that the CPU load does jump to its maximum (realtive 100%), limited by the hoster. This would mean theres a bug somewhere that makes the script stuck at some point. This can also be loops that do not end.
Reply
#3

It depends a lot on what your script does. If it is very processor-intensive, try running a more lightweight gamemode with as many players (If you can get them online) and see what the usage is.
Reply
#4

I'll try your methods.

Thanks for the reply, I'll post the results here.


#Edit

The CPU comes to 90%..

http://volt-host.com/graph/gs/proc/1666/0.00/24/

I don't know what I do.
Reply
#5

Looks definitely like the CPU% goes up to 100% and the average values slowly approach. Means the script stucks somewhere. Is the server still reacting, or is it hanging when the cpu% go up?
Reply
#6

is hanging when the cpu% go up.


The script is older citywide roleplay edited.

I already check all the timers; coders, etc. But I definetly don't found nothing.

Check my login player if this help you:
pawn Code:
forward loginPlayer(playerid, const senha[129])
public loginPlayer(playerid, const senha[129])
{
    new query[300], pname[MAX_PLAYER_NAME];
    new escpass[129];
    mysql_real_escape_string(senha, escpass);
    GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
    format(query, sizeof(query), "SELECT * FROM players WHERE Name = '%s' AND Password = '%s'", pname, escpass);
    mysql_query(query);
    mysql_store_result();
    if(mysql_fetch_row(data3))
    {
        new notimportant[130], isimportant[51];
        new notid;
        sscanf(data3, "p<|>ds[50]s[130]ddddddddddddddddddddddddddffddddddddddddddddddddddddddddddddddddddfff", notid, isimportant, notimportant, // + 3
        PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pAdmin], PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][gPupgrade], // 4
        PlayerInfo[playerid][pConnectTime],PlayerInfo[playerid][pReg],PlayerInfo[playerid][pSex],PlayerInfo[playerid][pAge], // 8
        PlayerInfo[playerid][pMuted],PlayerInfo[playerid][pExp],PlayerInfo[playerid][pCash],PlayerInfo[playerid][pAccount], // 12
        PlayerInfo[playerid][pMascara], PlayerInfo[playerid][pSkin2], PlayerInfo[playerid][pJob], PlayerInfo[playerid][pPayCheck], // 16
        PlayerInfo[playerid][pJailed], PlayerInfo[playerid][pJailTime], PlayerInfo[playerid][pMats], PlayerInfo[playerid][pLeader], // 20
        PlayerInfo[playerid][pMember],PlayerInfo[playerid][pFMember],PlayerInfo[playerid][pRank], PlayerInfo[playerid][pChar], // 24
        PlayerInfo[playerid][pSkin1], PlayerInfo[playerid][pBMX], PlayerInfo[playerid][pSHealth], PlayerInfo[playerid][pHealth], // 28
        PlayerInfo[playerid][pInt],PlayerInfo[playerid][pLocal],PlayerInfo[playerid][pTeam],PlayerInfo[playerid][pModel], // 32
        PlayerInfo[playerid][pPhousekey],PlayerInfo[playerid][pPcarkey],PlayerInfo[playerid][pPapptkey],PlayerInfo[playerid][pPbiskey], // 36
        PlayerInfo[playerid][pCarLic], PlayerInfo[playerid][pFlyLic], // 40
        PlayerInfo[playerid][pBoatLic],PlayerInfo[playerid][pFishLic], PlayerInfo[playerid][pGunLic], PlayerInfo[playerid][pPayDay], // 44
        PlayerInfo[playerid][pPayDayHad],PlayerInfo[playerid][pCDPlayer],PlayerInfo[playerid][pTut],PlayerInfo[playerid][pMissionNr],
        PlayerInfo[playerid][pWarns], PlayerInfo[playerid][pFuel], PlayerInfo[playerid][pMarried], PlayerInfo[playerid][pLocked],
        PlayerInfo[playerid][pRadioFrequency],PlayerInfo[playerid][pRadio],PlayerInfo[playerid][pPecArm],PlayerInfo[playerid][pMesa],
        PlayerInfo[playerid][pLuvas],drugInfo[playerid][dgCocaina],drugInfo[playerid][dgMaconha],drugInfo[playerid][dgOpio],
        drugInfo[playerid][dgCrack],drugInfo[playerid][dgMeth],drugInfo[playerid][dgHeroina],drugInfo[playerid][dgHaxixe],
        PlayerInfo[playerid][pPcarkey2],PlayerInfo[playerid][pTrabalhado],PlayerInfo[playerid][pPartes],PlayerInfo[playerid][pPcarkey3],
        PlayerInfo[playerid][pPos_x], PlayerInfo[playerid][pPos_y], PlayerInfo[playerid][pPos_z]); // 48
        mysql_free_result();

        PlayerInfo[playerid][pAdjustable] = 0;
        ResetPlayerCash(playerid);
        GivePlayerCash(playerid,PlayerInfo[playerid][pCash]);
        if(PlayerInfo[playerid][pReg] == 0)
        {
            PlayerInfo[playerid][pLevel] = 1;
            PlayerInfo[playerid][pSHealth] = 0.0;
            PlayerInfo[playerid][pHealth] = 100.0;
            PlayerInfo[playerid][pPos_x] = NOOB_X;
            PlayerInfo[playerid][pPos_y] = NOOB_Y;
            PlayerInfo[playerid][pPos_z] = NOOB_Z;
            PlayerInfo[playerid][pInt] = 0;
            PlayerInfo[playerid][pLocal] = 1;
            PlayerInfo[playerid][pTeam] = 3;
            PlayerInfo[playerid][pModel] = 135;
            new randphone = 10000000 + random(89999999);
            PlayerInfo[playerid][pNumero] = randphone;
            PlayerInfo[playerid][pPhousekey] = 255;
            PlayerInfo[playerid][pPcarkey] = 999;
            PlayerInfo[playerid][pPcarkey2] = 999;
            PlayerInfo[playerid][pPcarkey3] = 999;
            PlayerInfo[playerid][pPapptkey] = 255;
            PlayerInfo[playerid][pPbiskey] = 255;
            PlayerInfo[playerid][pAccount] = 0;
            PlayerInfo[playerid][pReg] = 1;
            GivePlayerCash(playerid, 500);
        }
        if(PlayerInfo[playerid][pLevel] == -999) return Ban(playerid);
        SetTimerEx("UnsetFirstSpawn", 5000, false, "i", playerid);
        SetSpawnInfo(playerid, PlayerInfo[playerid][pTeam], PlayerInfo[playerid][pModel], PlayerInfo[playerid][pPos_x], PlayerInfo[playerid][pPos_y], PlayerInfo[playerid][pPos_z], 1.0, -1, -1, -1, -1, -1, -1);
        if(gTeam[playerid] == 0)
        {
            gTeam[playerid] = 3;
        }
        else
        {
            gTeam[playerid] = PlayerInfo[playerid][pTeam];
        }
        gPlayerLogged[playerid] = 1;
        SpawnPlayer(playerid);
        if(PlayerInfo[playerid][pDonateRank]==0)
        {
            PlayerInfo[playerid][pMascara]=0;
        }
        SetPlayerSpawn(playerid);
        DateProp(playerid);
        SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin1]);
        SetPVarInt(playerid, "logouAgora", 1);
        format(data3, sizeof data3, " ");
        SetTimerEx("LoadArmas", 3000, false, "i", playerid);
        ClearChatbox(playerid, 10);
        SendClientMessage(playerid, COLOR_LIGHTRED, "ADVANCED: Roleplay");
        return 1;
    }
    else
    {
        SendClientMessage(playerid, COLOR_LIGHTRED, "* Houve um erro ou vocк digitou sua senha incorretamente. | /login");
        return 1;
    }
}

forward OnPlayerUpdateEx(playerid);
public OnPlayerUpdateEx(playerid)
{
    if(IsPlayerConnected(playerid) && gPlayerLogged[playerid])
    {
        MySQLCheckConnection();
        new sql[512];
        new nome[MAX_PLAYER_NAME];
        GetPlayerName(playerid, nome, MAX_PLAYER_NAME);
        format(sql, sizeof(sql), "UPDATE players SET PlayerLevel=%d WHERE Name='%s'", PlayerInfo[playerid][pLevel], nome);
        mysql_query(sql);
        PlayerInfo[playerid][pCash] = GetPlayerCash(playerid);
        format(sql, sizeof(sql), "UPDATE players SET AdminLevel=%d WHERE Name='%s'", PlayerInfo[playerid][pAdmin], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET DonateRank=%d WHERE Name='%s'", PlayerInfo[playerid][pDonateRank], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET UpgradePoints=%d WHERE Name='%s'", PlayerInfo[playerid][gPupgrade], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET ConnectedTime=%d WHERE Name='%s'", PlayerInfo[playerid][pConnectTime], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Registered=%d WHERE Name='%s'", PlayerInfo[playerid][pReg], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Sex=%d WHERE Name='%s'", PlayerInfo[playerid][pSex], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Age=%d WHERE Name='%s'", PlayerInfo[playerid][pAge], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Muted=%d WHERE Name='%s'", PlayerInfo[playerid][pMuted], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Respect=%d WHERE Name='%s'", PlayerInfo[playerid][pExp], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Money=%d WHERE Name='%s'", PlayerInfo[playerid][pCash], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Bank=%d WHERE Name='%s'", PlayerInfo[playerid][pAccount], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Mascara=%d WHERE Name='%s'", PlayerInfo[playerid][pMascara], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Skin2=%d WHERE Name='%s'", PlayerInfo[playerid][pSkin2], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Job=%d WHERE Name='%s'", PlayerInfo[playerid][pJob], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Paycheck=%d WHERE Name='%s'", PlayerInfo[playerid][pPayCheck], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Skin1=%d WHERE Name='%s'", PlayerInfo[playerid][pSkin1], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Jailed=%d WHERE Name='%s'", PlayerInfo[playerid][pJailed], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET JailTime=%d WHERE Name='%s'", PlayerInfo[playerid][pJailTime], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Materials=%d WHERE Name='%s'", PlayerInfo[playerid][pMats], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Leader=%d WHERE Name='%s'", PlayerInfo[playerid][pLeader], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Member=%d WHERE Name='%s'", PlayerInfo[playerid][pMember], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET FMember=%d WHERE Name='%s'", PlayerInfo[playerid][pFMember], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Rank=%d WHERE Name='%s'", PlayerInfo[playerid][pRank], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Chara=%d WHERE Name='%s'", PlayerInfo[playerid][pChar], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET ContractTime=%d WHERE Name='%s'", PlayerInfo[playerid][pContractTime], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET BMX=%d WHERE Name='%s'", PlayerInfo[playerid][pBMX], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET pSHealth=%f WHERE Name='%s'", PlayerInfo[playerid][pSHealth], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET pHealth=%f WHERE Name='%s'", PlayerInfo[playerid][pHealth], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Inte=%d WHERE Name='%s'", PlayerInfo[playerid][pInt], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Local=%d WHERE Name='%s'", PlayerInfo[playerid][pLocal], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Team=%d WHERE Name='%s'", PlayerInfo[playerid][pTeam], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Model=%d WHERE Name='%s'", PlayerInfo[playerid][pModel], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET House=%d WHERE Name='%s'", PlayerInfo[playerid][pPhousekey], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Car=%d WHERE Name='%s'", PlayerInfo[playerid][pPcarkey], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Appt=%d WHERE Name='%s'", PlayerInfo[playerid][pPapptkey], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Bizz=%d WHERE Name='%s'", PlayerInfo[playerid][pPbiskey], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Pos_x=%f WHERE Name='%s'", PlayerInfo[playerid][pPos_x], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Pos_y=%f WHERE Name='%s'", PlayerInfo[playerid][pPos_y], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Pos_z=%f WHERE Name='%s'", PlayerInfo[playerid][pPos_z], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET CarLic=%d WHERE Name='%s'", PlayerInfo[playerid][pCarLic], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET FlyLic=%d WHERE Name='%s'", PlayerInfo[playerid][pFlyLic], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET BoatLic=%d WHERE Name='%s'", PlayerInfo[playerid][pBoatLic], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET FishLic=%d WHERE Name='%s'", PlayerInfo[playerid][pFishLic], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET GunLic=%d WHERE Name='%s'", PlayerInfo[playerid][pGunLic], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET PayDay=%d WHERE Name='%s'", PlayerInfo[playerid][pPayDay], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET PayDayHad=%d WHERE Name='%s'", PlayerInfo[playerid][pPayDayHad], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Tutorial=%d WHERE Name='%s'", PlayerInfo[playerid][pTut], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Warnings=%d WHERE Name='%s'", PlayerInfo[playerid][pWarns], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Fuel=%d WHERE Name='%s'", PlayerInfo[playerid][pFuel], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Locked=%d WHERE Name='%s'", PlayerInfo[playerid][pLocked], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET FrequenciaRadio=%d WHERE Name='%s'", RadioFrequency[playerid], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Radio=%d WHERE Name='%s'", PlayerInfo[playerid][pRadio], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET PecArm=%d WHERE Name='%s'", PlayerInfo[playerid][pPecArm], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET pMesa=%d WHERE Name='%s'", PlayerInfo[playerid][pMesa], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET pLuvas=%d WHERE Name='%s'", PlayerInfo[playerid][pLuvas], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Cocaina=%d WHERE Name='%s'", drugInfo[playerid][dgCocaina], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Maconha=%d WHERE Name='%s'", drugInfo[playerid][dgMaconha], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Opio=%d WHERE Name='%s'", drugInfo[playerid][dgOpio], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Crack=%d WHERE Name='%s'", drugInfo[playerid][dgCrack], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Meth=%d WHERE Name='%s'", drugInfo[playerid][dgMeth], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Heroina=%d WHERE Name='%s'", drugInfo[playerid][dgHeroina], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Haxixe=%d WHERE Name='%s'", drugInfo[playerid][dgHaxixe], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Veh2=%d WHERE Name='%s'", PlayerInfo[playerid][pPcarkey2], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Trabalhado=%d WHERE Name='%s'", PlayerInfo[playerid][pTrabalhado], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET Partes=%d WHERE Name='%s'", PlayerInfo[playerid][pPartes], nome);
        mysql_query(sql);
        format(sql, sizeof(sql), "UPDATE players SET car3=%d WHERE Name='%s'", PlayerInfo[playerid][pPcarkey3], nome);
        mysql_query(sql);
        if ((PlayerInfo[playerid][pPos_x]==0.0 && PlayerInfo[playerid][pPos_y]==0.0 && PlayerInfo[playerid][pPos_z]==0.0))
        {
            PlayerInfo[playerid][pPos_x] = 1684.9;
            PlayerInfo[playerid][pPos_y] = -2244.5;
            PlayerInfo[playerid][pPos_z] = 13.5;
        }
        if(Spectate[playerid] != 255)
        {
            PlayerInfo[playerid][pPos_x] = Unspec[playerid][sPx];
            PlayerInfo[playerid][pPos_y] = Unspec[playerid][sPy];
            PlayerInfo[playerid][pPos_z] = Unspec[playerid][sPz];
            PlayerInfo[playerid][pInt] = Unspec[playerid][sPint];
            PlayerInfo[playerid][pLocal] = Unspec[playerid][sLocal];
        }
    }
    return 1;
}
Thanks for you reply again.;+rep
Reply
#7

Hm I couldnt find anything suspicious in the function. A thing you should really optimize is the giant amount of queries in OnPlayerUpdateEx. You can simply reduce it from 30+ queries to just one like this: "UPDATE players SET PlayerLevel=%d, AdminLevel=%d, ... WHERE name='%s';"
I dont think this can make your server hang, but depending on how often it is called it can cause a lot of lag.
Reply
#8

Thanks for your reply.
I tested with grandlarc gamemode, and the CPU continues up.
I think is volt host... I'll try another gamemode
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)