Server laggt aber ich weiß nicht warum

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
  • Ich habe bereits diese Tipps befolgt ,Hilfe wenn der Server laggt , aber es laggt trotzdem noch.


    Ich habe 4 Timer auf folgenden Instanzen:


    1 Sekunde
    10 Sekunden
    5 Minute
    15 Minuten


    In allen 4 Publics laufen so wenig Schleifen für jeden Spieler wie möglich.


    Ich habe bereits meine eigenen Logs rausgenommen weil diese den Server zum laggen brauchten, doch er laggt immer noch. So sahen meine Logs aus:



    Außerdem hab ich noch nen Antibadwords welchen ich aber eigentlich nicht entfernen möchte:



    Weiß sonst noch einer woran das laggen liegen könnte ?

  • fragt mal bei samp-online nach wie es mit der Auslastung ausschaut und schaltet bei mysql den log ein um zu schauen ob der irgendwo 100000einträge macht


    edit: sorry habe die stats nicht gesehen

  • ja genau mysql, wird nur aufgerufen wenn man sich einloggt und ausloggt.


    Hier der 1 Sekunden Timer und der 10 Sekunden Timer


    public onesek() // Diverse Updates auf 1 Sekunde
    {
    // Team-Counter Spawnschutz Prison RB Adminleben

    tcounter[tmafia] = 0;
    tcounter[tpolice] = 0;

    for(new i = 0;i<MAX_PLAYERS;i ++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    if(gTeam[i] == TEAM_MAFIA && GetPVarInt(i,ADMINLEBENCHECK_KEY) == 0)
    {
    tcounter[tmafia] ++;
    }
    else if(gTeam[i] == TEAM_POLICE && GetPVarInt(i,ADMINLEBENCHECK_KEY) == 0)
    {
    tcounter[tpolice] ++;
    }

    if(GetPVarInt(i,SPAWNSCHUTZ_KEY) > 1)
    {
    SetPlayerHealth(i,10000);
    TextDrawHideForPlayer(i,spawnschutztext);
    TextDrawShowForPlayer(i,spawnschutztext);
    SetPVarInt(i,SPAWNSCHUTZ_KEY,GetPVarInt(i,SPAWNSCHUTZ_KEY)-1);
    }
    if(GetPVarInt(i,SPAWNSCHUTZ_KEY) == 1)
    {
    SetPlayerHealth(i,100);
    TextDrawHideForPlayer(i,spawnschutztext);
    SetPVarInt(i,SPAWNSCHUTZ_KEY,GetPVarInt(i,SPAWNSCHUTZ_KEY)-1);
    }

    if(GetPVarInt(i,PRISON_KEY) >= 1)
    {
    if(GetPVarInt(i,PRISON_KEY) >= 1)
    {
    SetPVarInt(i,PRISON_KEY,GetPVarInt(i,PRISON_KEY)-1);
    }
    if(GetPVarInt(i,PRISON_KEY) == 0)
    {
    SpawnPlayer(i);
    SendClientMessage(i,weiß,"Deine Prison Zeit ist abgelaufen");
    }
    }

    if(GetPVarInt(i,HATRBGEBAUT_KEY) >= 1)
    {
    SetPVarInt(i,HATRBGEBAUT_KEY,GetPVarInt(i,HATRBGEBAUT_KEY)-1);
    }

    if(GetPVarInt(i,ADMINLEBENCHECK_KEY) == 1)
    {
    SetPlayerHealth(i,1000);
    SetPlayerArmour(i,1000);
    }
    }
    }

    // Wurdeeingenommen

    for(new i = 0;i<sizeof(zonen);i++)
    {
    if(wurdeeingenommen[i] >= 1)
    {
    wurdeeingenommen[i] --;
    }
    }


    // Admincarleben


    for(new i = 0;i<sizeof(admincar);i++)
    {
    SetVehicleHealth(admincar[i],10000.0);
    RepairVehicle(admincar[i]);
    }
    return 1;
    }


    public tensek()
    {
    // Medic Punktebar Ränge

    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(gKlasse[i] == KLASSE_MEDIC)
    {
    for(new p = 0;p<MAX_PLAYERS;p++)
    {
    if(IsPlayerConnected(p) && p != i)
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(i,x,y,z);


    if(IsPlayerInRangeOfPoint(p,5.0,x,y,z))
    {
    if(gTeam[i] == gTeam[p])
    {
    new Float:health;
    GetPlayerHealth(p,health);


    if(health + 25 > 100)
    {
    SetPlayerHealth(p,100.0);
    }
    else
    {
    SetPlayerHealth(p,health+25);
    }
    }
    }
    }
    }
    }

    for(new j = 0;j<sizeof(rankdraws);j++)
    {
    if(GetPVarInt(i,PUNKTE_KEY) >= rankdraws[j][ipunkte])
    {
    for(new k = 0;k<sizeof(rankdraws);k++)
    {
    TextDrawHideForPlayer(i,rankdraw[k]);
    }
    TextDrawShowForPlayer(i,rankdraw[j]);
    SetPVarInt(i,RANK_KEY,j);


    if(j == 12)
    {
    if(GetPVarInt(i,PREMIUM_KEY) == 0)
    {
    SetPVarInt(i,PREMIUM_KEY,1);
    SendClientMessage(i,hblau,"Für deine Leistungen um Rank 12 erhälst du Premium");
    }
    }
    }
    }

    new punktestring[128];
    format(punktestring,sizeof(punktestring),"Punkte: %d\t\tKills: %d\t\tTode: %d",GetPVarInt(i,PUNKTE_KEY),GetPVarInt(i,KILLS_KEY),GetPVarInt(i,TODE_KEY));
    TextDrawSetString(statsdraw[i],punktestring);
    }
    }


    // Uhrzeit


    if(autozeit == 1)
    {
    new stunde,minute,sekunde;
    gettime(stunde,minute,sekunde);
    SetWorldTime(stunde);
    }
    return 1;
    }


    Noch zur Info:


    OnPlayerUpdate ist leer

  • laggt der server immer oder nur wenn mehr user oben sind ? ...


    ps: Schau trotzdem in der log nach , ich hatte ne settimerex für das tutorial , damit wenn er fertig ist da einen wert verbessert und dann lief das bis in die unendlichkeit weil er den timer nicht gekillt hat

  • Je mehr Spieler online sind, desto stärker laggt es.


    Wenn man die Timer auf zehn Minuten erhöht laggt es weniger.


    Nur was bringt mir das, die Timer zu erhöhen. Ich brauch ja nen Timer auf 1 Sekunde und 10 Sekunden.

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


    Du hast 4 verschiedene Timer.


    1 Sek
    10Sek
    5Minuten
    15Minuten


    Das heißt, Der Timer (1 Sekunde) hat jede 10 Sekunden mit den anderen Timer zusammen, das heißt es werden 2 Publics jede 10 Sekunden gleichzeitig aufgerufen. Diese Laggs werden dan nommal krasser, weil du dann nochmal 15 hast.
    Bei der 15 Minute ist dann bestimmt total laggy da das Script dann 4 Publics gleichezitig aufruft. So denk ich mal das es daran liegt...

  • Es laggt ja immer und nicht nur alle 10 Sekunden. Denke eigentlich nicht, dass es daran liegt.


    Soll ich den 10 Sekunden Timer in den 1 Sekunden Timer packen ? ist ja eig auch nicht gut, weil dadurch der Code im public länger wird.

  • Den 1 Sekunden Timer kann ich nicht verändern, Die 10 und 15 Minuten sind egal, da sie nicht oft aufgerufen werden.


    Das heißt ich kann nur noch den 10 Sekunden Timer ändern. Aber wenn ich den um ein paar Milisekunden änder ist die Frage ob das überhaupt was bringt, denn der Server brauch ja auch ein bisschen um den 1 Sekunden Timer zu durchlaufen. Aber wenn ich den um einen höheren Intervall ändern sind es ja keine 10 Sekunden mehr.

  • Fail..
    Sowas gibt es nicht.



    Bei mir laufen 8 Timer gleichzeitig für Verschiedene Sachen.



    btw:


    Was hast du den sonst noch im Script AUSER die Timer?

  • Also wenn ich alle 1 Sek und 10 Sek auf 5 Minuten oder so stelle laggt es gar nicht. Also liegt es wohl an den Timern. Schaut euch bitte nochmal meine Publics an (befinden sich ein paar Post höher) und sagt mir, ob ihr da etwas Ressourcen fressendes findet.

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