Server Megga Lagg...

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Morgen Brotfisch


    Ich habe letztens ein Server Rekord erstellt also 74 User haben gespielt normalerweise spielen 30-50 user täglich, alles funktioniert super, nur als die 74 User gespielt waren war ein Mega lagg auf meinem Server, der server hat übelst gelaggt, und dadurch waren sofort 18 User off
    könnte mir jemand sagen wie ich die Server Laggs in zukunft verhindern kann?

  • Irgendwas mit curl gemacht? Ein Plugin, dass ähnliches verwendet? Irgendwo im Script eine "while" Schleife?


    traxx du bist ja nur Deko also seid wann kann "Deko" reden xD :D


    Tim, wo hast du den Server gehostet ? Vll stellt dir dieser zuwenig MB zu verfügung und/oder es wird ja auch angezeigt bei manchen Hostern ob man zuviele Ressourcen verbraucht


    Ich bin Special Deko :D


    Und an den Thread ersteller, schau echt mal ob du die Accounts jede Sekunde Speicherst.


    mfg traxx

  • Mein Server läuft auf Dini,..ich wollte es auf MySQL umschreiben aber es ist zuviel arbeit...



    traxx ja der ping ist bei 20-35 ...



    könnte ihr mir villt irgendwelche tipps geben wie ich die bugs verhindern kann? weil ich viele User deswegen verliere -.-

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ich denke, dass irgendwo im Script eine while Schleife oder eine Abfrage ist, die etwas länger braucht. Während dieser kann der Server nichts anderes ausführen, sprich der Spieler hat das Gefühl der Server würde hängen bzw. gecrasht sein -> User verlassen den Server.

  • Hmm wie meinst du das Sniper?


    Zitat

    naja,geh mal bitte auf die Fragen ein, die das Script betreffen.



    JJJan@ und wie kann ich wissen obs sowas im script vorhanden ist? ( GF ) kenne dieses Script nicht auswendig...

  • Ich meine dies:


    Und an den Thread ersteller, schau echt mal ob du die Accounts jede Sekunde Speicherst.


    Speicherst du jede Minute alle Accountdaten oder nur beim Offline und Online gehen, überschneiden sich große Timer (mit Großem Code) öfters?


    Irgendwas mit curl gemacht? Ein Plugin, dass ähnliches verwendet? Irgendwo im Script eine "while" Schleife?

  • Das ist ein SoL Script,.. ich habs selbst so gemacht das die Accounts gespeichert werden,.. ALSO ich habs bei OnPlayerLogin , OnPlayerDisconnect, OnGameModeInit und OnGameModeExit eingefügt,..also besser gesagt wo der user off geht und sonstiges...

  • Soll ich die Ganzen Code etwa schicken also meint ihr soo?



    public LoadFactionCars(){
    if(!fexist(FACTION_CAR_FILE)){
    new File:tfFile=fopen(FACTION_CAR_FILE,io_write);
    fclose(tfFile);
    }
    new File:fFile=fopen(FACTION_CAR_FILE,io_read),Content[1024],fc;
    while(fread(fFile,Content) && fc<sizeof(FactionCars)){
    StripNewLine(Content);
    sscanf(Content,"dffffdddddddddddddddddddddd",
    FactionCars[fc][fVehid],
    FactionCars[fc][fPos][0],
    FactionCars[fc][fPos][1],
    FactionCars[fc][fPos][2],
    FactionCars[fc][fPos][3],
    FactionCars[fc][fCol][0],
    FactionCars[fc][fCol][1],
    FactionCars[fc][fFaction][0],
    FactionCars[fc][fFaction][1],
    FactionCars[fc][fFaction][2],
    FactionCars[fc][fFaction][3],
    FactionCars[fc][fFaction][4],
    FactionCars[fc][fTuning][0],
    FactionCars[fc][fTuning][1],
    FactionCars[fc][fTuning][2],
    FactionCars[fc][fTuning][3],
    FactionCars[fc][fTuning][4],
    FactionCars[fc][fTuning][5],
    FactionCars[fc][fTuning][6],
    FactionCars[fc][fTuning][7],
    FactionCars[fc][fTuning][8],
    FactionCars[fc][fTuning][9],
    FactionCars[fc][fTuning][10],
    FactionCars[fc][fTuning][11],
    FactionCars[fc][fTuning][12],
    FactionCars[fc][fTuning][13],
    FactionCars[fc][fPrice]);
    if(FactionCars[fc][fVehid] >= 400 && FactionCars[fc][fVehid] <= 611){
    FactionCars[fc][fCarid] = CreateVehicle(FactionCars[fc][fVehid],FactionCars[fc][fPos][0],FactionCars[fc][fPos][1],FactionCars[fc][fPos][2],FactionCars[fc][fPos][3],FactionCars[fc][fCol][0],FactionCars[fc][fCol][1],-255);
    #if defined FACTION_CARS_LOCKABLE
    fLockCar(FactionCars[fc][fCarid]);
    FactionCars[fc][fLock] = true;
    #endif
    #if defined FACTION_CARS_TUNEABLE
    if(IsAllowedFactionToTune(FactionCars[fc][fFaction][0])){
    if(FactionCars[fc][fTuning][0] != 0) { AddVehicleComponent(FactionCars[fc][fCarid],FactionCars[fc][fTuning][0]); }
    if(FactionCars[fc][fTuning][1] != 0) { AddVehicleComponent(FactionCars[fc][fCarid],FactionCars[fc][fTuning][1]); }
    if(FactionCars[fc][fTuning][2] != 0) { AddVehicleComponent(FactionCars[fc][fCarid],FactionCars[fc][fTuning][2]); }
    if(FactionCars[fc][fTuning][3] != 0) { AddVehicleComponent(FactionCars[fc][fCarid],FactionCars[fc][fTuning][3]); }
    if(FactionCars[fc][fTuning][4] != 0) { AddVehicleComponent(FactionCars[fc][fCarid],FactionCars[fc][fTuning][4]); }
    if(FactionCars[fc][fTuning][5] != 0) { AddVehicleComponent(FactionCars[fc][fCarid],FactionCars[fc][fTuning][5]); }
    if(FactionCars[fc][fTuning][6] != 0) { AddVehicleComponent(FactionCars[fc][fCarid],FactionCars[fc][fTuning][6]); }
    if(FactionCars[fc][fTuning][7] != 0) { AddVehicleComponent(FactionCars[fc][fCarid],FactionCars[fc][fTuning][7]); }
    if(FactionCars[fc][fTuning][8] != 0) { AddVehicleComponent(FactionCars[fc][fCarid],FactionCars[fc][fTuning][8]); }
    if(FactionCars[fc][fTuning][9] != 0) { AddVehicleComponent(FactionCars[fc][fCarid],FactionCars[fc][fTuning][9]); }
    if(FactionCars[fc][fTuning][10] != 0) { AddVehicleComponent(FactionCars[fc][fCarid],FactionCars[fc][fTuning][10]); }
    if(FactionCars[fc][fTuning][11] != 0) { AddVehicleComponent(FactionCars[fc][fCarid],FactionCars[fc][fTuning][11]); }
    if(FactionCars[fc][fTuning][12] != 0) { AddVehicleComponent(FactionCars[fc][fCarid],FactionCars[fc][fTuning][12]); }
    if(FactionCars[fc][fTuning][13] != 0) { AddVehicleComponent(FactionCars[fc][fCarid],FactionCars[fc][fTuning][13]); }
    }
    #endif
    fc++;
    }
    }fclose(fFile);
    return printf(" '%d' Fraktionsfahrzeuge wurden geladen & erstellt.",fc);
    }



    //EDIT: Das bringt wirklich nicht wenn ich das hier alles auflisten würde, dieses while steht bei mir im script mehr als über 60-70 mal

    Einmal editiert, zuletzt von TimTom ()

  • Jo ich habe hier etwas gefunden,..gibt bestimmt noch mehr das ist aber bisjetz die einzige...ich suche mal weiter


    if(!IsPlayerInAnyVehicle(playerid) && newkeys & KEY_SECONDARY_ATTACK)
    {
    new Float:pos[3];
    GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
    if(pos[1] < -1301.4 && pos[1] > -1303.2417 && pos[0] < 1786.2131 && pos[0] > 1784.1555)
    ShowElevatorDialog(playerid);
    else
    {
    if(pos[1] > -1301.4 && pos[1] < -1299.1447 && pos[0] < 1785.6147 && pos[0] > 1781.9902)
    {
    new i=20;
    while(pos[2] < GetDoorsZCoordForFloor(i) + 3.5 && i > 0)
    i --;


    if(i == 0 && pos[2] < GetDoorsZCoordForFloor(0) + 2.0)
    i = -1;


    if(i <= 19)
    {
    CallElevator(playerid, i + 1);
    GameTextForPlayer(playerid, "~r~Aufzug gerufen", 3500, 4);
    }
    }
    }
    }




    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 525)
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Versuche das Auto abzuschleppen...");
    new Float:pX, Float:pY, Float:pZ;
    GetPlayerPos(playerid, pX, pY, pZ);
    new Float:vX, Float:vY, Float:vZ;
    new Found = 0;
    new vid = 0;
    while((vid < MAX_VEHICLES) && (!Found))
    {
    vid++;
    GetVehiclePos(vid,vX,vY,vZ);
    if((floatabs(pX-vX)<7.0)&&(floatabs(pY-vY)<7.0) && (floatabs(pZ-vZ)<7.0) && (vid!=GetPlayerVehicleID(playerid)))
    {
    Found = 1;
    if(IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)))
    {
    DetachTrailerFromVehicle(GetPlayerVehicleID(playerid));
    }
    AttachTrailerToVehicle(vid, GetPlayerVehicleID(playerid));
    GameTextForPlayer(playerid, "Fahrzeug am Haken", 5000, 1);
    }
    }
    if(!Found)
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Kein Fahrzeug in der Nähe!");
    }
    }
    }




    Function InitLockDoors(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    new c;
    while (c < 254)
    {
    c++;
    if (gCarLock[code=c] == 1)
    {
    SetVehicleParamsForPlayer(c,playerid,0,1);
    }
    }
    }
    return 1;
    }


    Function LoadIRC()
    {
    new arrCoords[5][64];
    new strFromFile2[256];
    new File: file = fopen("channels.cfg", io_read);
    if (file)
    {
    new idx;
    while (idx < sizeof(IRCInfo))
    {
    fread(file, strFromFile2);
    split(strFromFile2, arrCoords, '|');
    strmid(IRCInfo[idx][iAdmin], arrCoords[0], 0, strlen(arrCoords[0]), 255);
    strmid(IRCInfo[idx][iMOTD], arrCoords[1], 0, strlen(arrCoords[1]), 255);
    strmid(IRCInfo[idx][iPassword], arrCoords[2], 0, strlen(arrCoords[2]), 255);
    IRCInfo[idx][iNeedPass] = strval(arrCoords[3]);
    IRCInfo[idx][iLock] = strval(arrCoords[4]);
    //printf("IRC:%d Admin:%s MOTD: %s Password: %s NeedPass: %d Lock: %d",idx,IRCInfo[idx][iAdmin],IRCInfo[idx][iMOTD],IRCInfo[idx][iPassword],IRCInfo[idx][iNeedPass],IRCInfo[idx][iLock]);
    idx++;//LOGSPAMM
    }
    fclose(file);
    }
    return 1;
    }



    Function SaveIRC()
    {
    new idx;
    new File: file2;
    while (idx < sizeof(IRCInfo))
    {
    new coordsstring[256];
    format(coordsstring, sizeof(coordsstring), "%s|%s|%s|%d|%d\n",
    IRCInfo[idx][iAdmin],
    IRCInfo[idx][iMOTD],
    IRCInfo[idx][iPassword],
    IRCInfo[idx][iNeedPass],
    IRCInfo[idx][iLock]);
    if(idx == 0)
    {
    file2 = fopen("channels.cfg", io_write);
    }
    else
    {
    file2 = fopen("channels.cfg", io_append);
    }
    fwrite(file2, coordsstring);
    idx++;
    fclose(file2);
    }
    return 1;
    }




    Function LoadPapers()
    {
    new arrCoords[11][64];
    new strFromFile2[256];
    new File: file = fopen("papers.cfg", io_read);
    if (file)
    {
    new idx;
    while (idx < sizeof(PaperInfo))
    {
    fread(file, strFromFile2);
    split(strFromFile2, arrCoords, '|');
    PaperInfo[idx][PaperUsed] = strval(arrCoords[0]);
    strmid(PaperInfo[idx][PaperMaker], arrCoords[1], 0, strlen(arrCoords[1]), 255);
    strmid(PaperInfo[idx][PaperTitle], arrCoords[2], 0, strlen(arrCoords[2]), 255);
    strmid(PaperInfo[idx][PaperText1], arrCoords[3], 0, strlen(arrCoords[3]), 255);
    strmid(PaperInfo[idx][PaperText2], arrCoords[4], 0, strlen(arrCoords[4]), 255);
    strmid(PaperInfo[idx][PaperText3], arrCoords[5], 0, strlen(arrCoords[5]), 255);
    strmid(PaperInfo[idx][PaperText4], arrCoords[6], 0, strlen(arrCoords[6]), 255);
    strmid(PaperInfo[idx][PaperText5], arrCoords[7], 0, strlen(arrCoords[7]), 255);
    strmid(PaperInfo[idx][PaperText6], arrCoords[8], 0, strlen(arrCoords[8]), 255);
    strmid(PaperInfo[idx][PaperText7], arrCoords[9], 0, strlen(arrCoords[9]), 255);
    PaperInfo[idx][SafeSaving] = strval(arrCoords[10]);
    //printf("Paper:%d Used: %d Maker:%s Title: %s Text1: %s Text2: %s Text3: %s Text4: %s Text5: %s Text6: %s Text7: %s",
    //LOGSPAMM
    //idx,PaperInfo[idx][PaperUsed],PaperInfo[idx][PaperMaker],PaperInfo[idx][PaperTitle],PaperInfo[idx][PaperText1],PaperInfo[idx][PaperText2],PaperInfo[idx][PaperText3],PaperInfo[idx][PaperText4],PaperInfo[idx][PaperText5],PaperInfo[idx][PaperText6],PaperInfo[idx][PaperText7]);
    idx++;
    }
    fclose(file);
    }
    return 1;
    }



    Function SavePapers()
    {
    new idx;
    new File: file2;
    while (idx < sizeof(IRCInfo))
    {
    new coordsstring[256];
    format(coordsstring, sizeof(coordsstring), "%d|%s|%s|%s|%s|%s|%s|%s|%s|%s|%d\n",
    PaperInfo[idx][PaperUsed],
    PaperInfo[idx][PaperMaker],
    PaperInfo[idx][PaperTitle],
    PaperInfo[idx][PaperText1],
    PaperInfo[idx][PaperText2],
    PaperInfo[idx][PaperText3],
    PaperInfo[idx][PaperText4],
    PaperInfo[idx][PaperText5],
    PaperInfo[idx][PaperText6],
    PaperInfo[idx][PaperText7],
    PaperInfo[idx][SafeSaving]);
    if(idx == 0)
    {
    file2 = fopen("papers.cfg", io_write);
    }
    else
    {
    file2 = fopen("papers.cfg", io_append);
    }
    fwrite(file2, coordsstring);
    idx++;
    fclose(file2);
    }
    return 1;
    }


    Function LoadFraktionsKassen()
    {
    new File:Kasse = fopen("Fraktionskassen.cfg",io_read);
    new idx = 0;
    new read[128];
    while(idx < sizeof(FraktionsKasse))
    {
    fread(Kasse,read);
    for(new x=0; x<strlen(read); x++)
    {
    if(read[x]== '\n')
    {
    read[x] = '\0';
    }
    }
    FraktionsKasse[idx] = strval(read);
    idx++;
    }
    fclose(Kasse);
    return 1;
    }




    Function LoadBizz()
    {
    new arrCoords[19][64];
    new strFromFile2[256];
    new File: file = fopen("bizz.cfg", io_read);
    if (file)
    {
    new idx;
    while (idx < sizeof(BizzInfo))
    {
    fread(file, strFromFile2);
    split(strFromFile2, arrCoords, '|');
    BizzInfo[idx][bOwned] = strval(arrCoords[0]);
    strmid(BizzInfo[idx][bOwner], arrCoords[1], 0, strlen(arrCoords[1]), 255);
    strmid(BizzInfo[idx][bMessage], arrCoords[2], 0, strlen(arrCoords[2]), 255);
    strmid(BizzInfo[idx][bExtortion], arrCoords[3], 0, strlen(arrCoords[3]), 255);
    BizzInfo[idx][bEntranceX] = floatstr(arrCoords[4]);
    BizzInfo[idx][bEntranceY] = floatstr(arrCoords[5]);
    BizzInfo[idx][bEntranceZ] = floatstr(arrCoords[6]);
    BizzInfo[idx][bExitX] = floatstr(arrCoords[7]);
    BizzInfo[idx][bExitY] = floatstr(arrCoords[8]);
    BizzInfo[idx][bExitZ] = floatstr(arrCoords[9]);
    BizzInfo[idx][bLevelNeeded] = strval(arrCoords[10]);
    BizzInfo[idx][bBuyPrice] = strval(arrCoords[11]);
    BizzInfo[idx][bEntranceCost] = strval(arrCoords[12]);
    BizzInfo[idx][bTill] = strval(arrCoords[13]);
    BizzInfo[idx][bLocked] = strval(arrCoords[14]);
    BizzInfo[idx][bInterior] = strval(arrCoords[15]);
    BizzInfo[idx][bProducts] = strval(arrCoords[16]);
    BizzInfo[idx][bMaxProducts] = strval(arrCoords[17]);
    BizzInfo[idx][bPriceProd] = strval(arrCoords[18]);
    printf("BizzInfo:%d Owner:%s Message:%s Entfee:%d Till:%d Products:%d/%d Interior:%d.\n",
    //LOGSPAMM
    idx,
    BizzInfo[idx][bOwner],
    BizzInfo[idx][bMessage],
    BizzInfo[idx][bEntranceCost],
    BizzInfo[idx][bTill],
    BizzInfo[idx][bProducts],
    BizzInfo[idx][bMaxProducts],
    BizzInfo[idx][bInterior]);
    idx++;
    }
    fclose(file);
    }
    return 1;
    }



    Function LoadSBizz()
    {
    new arrCoords[16][64];
    new strFromFile2[256];
    new File: file = fopen("sbizz.cfg", io_read);
    if (file)
    {
    new idx;
    while (idx < sizeof(SBizzInfo))
    {
    fread(file, strFromFile2);
    split(strFromFile2, arrCoords, '|');
    SBizzInfo[idx][sbOwned] = strval(arrCoords[0]);
    strmid(SBizzInfo[idx][sbOwner], arrCoords[1], 0, strlen(arrCoords[1]), 255);
    strmid(SBizzInfo[idx][sbMessage], arrCoords[2], 0, strlen(arrCoords[2]), 255);
    strmid(SBizzInfo[idx][sbExtortion], arrCoords[3], 0, strlen(arrCoords[3]), 255);
    SBizzInfo[idx][sbEntranceX] = floatstr(arrCoords[4]);
    SBizzInfo[idx][sbEntranceY] = floatstr(arrCoords[5]);
    SBizzInfo[idx][sbEntranceZ] = floatstr(arrCoords[6]);
    SBizzInfo[idx][sbLevelNeeded] = strval(arrCoords[7]);
    SBizzInfo[idx][sbBuyPrice] = strval(arrCoords[8]);
    SBizzInfo[idx][sbEntranceCost] = strval(arrCoords[9]);
    SBizzInfo[idx][sbTill] = strval(arrCoords[10]);
    SBizzInfo[idx][sbLocked] = strval(arrCoords[11]);
    SBizzInfo[idx][sbInterior] = strval(arrCoords[12]);
    SBizzInfo[idx][sbProducts] = strval(arrCoords[13]);
    SBizzInfo[idx][sbMaxProducts] = strval(arrCoords[14]);
    SBizzInfo[idx][sbPriceProd] = strval(arrCoords[15]);
    printf("SBizzInfo:%d Owner:%s Message:%s Entfee:%d Till:%d Products:%d/%d Interior:%d.\n",
    //LOGSPAMM
    idx,
    SBizzInfo[idx][sbOwner],
    SBizzInfo[idx][sbMessage],
    SBizzInfo[idx][sbEntranceCost],
    SBizzInfo[idx][sbTill],
    SBizzInfo[idx][sbProducts],
    SBizzInfo[idx][sbMaxProducts],
    SBizzInfo[idx][sbInterior]);
    idx++;
    }
    fclose(file);
    }
    return 1;
    }


    strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }


    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }


    Function split(const strsrc[], strdest[][], delimiter)
    {
    new i, li;
    new aNum;
    new len;
    while(i <= strlen(strsrc)){
    if(strsrc[i]==delimiter || i==strlen(strsrc)){
    len = strmid(strdest[aNum], strsrc, li, i, 128);
    strdest[aNum][len] = 0;
    li = i+1;
    aNum++;
    }
    i++;
    }
    return 1;
    }


    if(strcmp(cmdtext,"/fpark",true)==0){
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER){
    new fc;while(fc<sizeof(FactionCars)){
    if(FactionCars[fc][fVehid] >= 400 && FactionCars[fc][fVehid] <= 611){
    if(GetPlayerVehicleID(playerid) == FactionCars[fc][fCarid]){
    if(GetPlayerLeader(playerid) == FactionCars[fc][fFaction][0]){
    GetVehiclePos(FactionCars[fc][fCarid],FactionCars[fc][fPos][0],FactionCars[fc][fPos][1],FactionCars[fc][fPos][2]);
    GetVehicleZAngle(FactionCars[fc][fCarid],FactionCars[fc][fPos][3]);
    SendClientMessage(playerid,FACTION_COL_YELLOW,"Du hast das Fraktionsfahrzeug erfolgreich umgeparkt.");
    }else SendClientMessage(playerid,FACTION_COL_GREY,"Du bist dazu nicht berechtigt.");
    return true;
    }
    }fc++;
    }SendClientMessage(playerid,FACTION_COL_GREY,"Du sitzt in keinem Fraktionsfahrzeug.");
    }else SendClientMessage(playerid,FACTION_COL_GREY,"Du sitzt in keinem Fahrzeug oder bist nicht der Fahrer.");
    return true;
    }

    Einmal editiert, zuletzt von TimTom ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen