Hallo,
Dabei war ich in einer meiner letzten Mails noch so des
Lobes voll! Hätte ich besser nicht? ;-)Nee, besser nicht. Lob hab ich nicht verdient.
Ach, ob verdient oder nicht, hin und wieder ein Lob schadet nicht ;-)
Jaa, ich weiss. Ich denke schon die ganze Zeit nach,
wie man eine derartige Ueberlastung verhindern kann...Da das eine Art DDoS ist, wäre es sehr schwierig.
Deshalb denke ich ja auch schon die ganze Zeit nach ;)
Dummerweise sind das aber reguläre Anfragen, die kann man ja nicht einfach ignorieren.
Ist halt eine Lastspitze, muß man nehmen, wie sie kommen.
Tja, aber trotzdem gibt es IMHO genug zu optimieren. Ich habe
eben heute nochmal dran gebastelt und drei Sachen
zusammengebaut: erstens werden, wenn mehr als 20 Verbindungen
in der Queque sind, die neuen abgelehnt:if(head.clients.clientnum > MAX_CLIENT_NUM) {
fo_log(LOG_STD,__FILE__,__LINE__,"rejecting connection\n");
writen(connfd,"507 Server has to many connections\n",35);
close(connfd);
pthread_mutex_unlock(&head.clients.lock);
}
Ist aber sehr brutal.
Könnte glatt von mir stammen ;-)
Ausserdem hat der poll-Thread jetzt grundsaetzlich eine
Prioritaets-Stufe weniger. Zuletzt werden Postings jetzt
nicht mehr durch einzelne write()-Calls 'rausgeschickt,
sondern die Antwort wird im Speicher zusammengesetzt und dann
mit einem einzigen write()-Call 'rausgeschickt. Damit werden
eine *Menge* Systemcalls eingespart.
Sehr schön.
Aber sei doch stolz:
Der Server ächzt zwar kräftig, aber er hält!Naja... nicht wirklich.
_Jetzt_ hatte ich erstmalig einen Timeout.
30.000 Hits/Std gehen IMHO wohl schon an die Substanz des
Prozessors, ist schon sehr brutal. (Muß ja immerhin auch
noch gzippen!)Der Prozessor ruht sich aus:
load averages: 0.48, 0.48, 0.42
?
Auha.
Wo ist denn da jetzt der Flaschenhals?
Anbindung?
Unwahrscheinlich, sind wohl eher die Platten.
Mmh...
Wieviel Speicher ist denn zur Verfügung? Kann man was puffern? Forumshauptdatei komplett z.B.?
Die Individualisierung ist sehr aufwendig aber klein, die könnte man z.B. gut buffern.
Und das größte Problem, wie immer:
Auslagerungsdatei?
Wie sieht der Speicherbedarf aus? Wird viel ausgelagert?
Aber ich werde mal schauen, vielleicht hast Du ja irgendwo
unabsichtlich eine Bremse eingebaut.Ja, waere nett. Hab die Aenderungen gerade eingecheckt.
Ja, angekommen. Mal schauen.
BTT (Falls der Ursprungsposter überhaupt noch mitliest ,-):
PHP bietet auch, evt als externe Lib, eine soundex() Funktion an. Ist zwar nur englisch, aber könnte genutzt werden.
Aber sei gewarnt: ist nicht einfach!
so short
Christoph Zurnieden