2008-12-26 5 views
5

Ich benutze eine Django App mit FastCGI und lighttpd.Welche Werte für FastCGI maxrequests, maxspare, minspare, maxchildren?

Kann mir jemand erklären, was ich bei der Entscheidung über den zu verwendenden Wert für maxrequests, maxspare, minspare, maxchilds beachten sollte?

Diese Optionen sind nicht allzu gut dokumentiert, scheinen aber recht wichtig zu sein.

Sagen Sie mir nicht nur, was sie tun; Ich möchte verstehen, was Auswirkungen sie haben und wie sollte ich entscheiden, welche Werte zu verwenden.

Danke.

Antwort

13

Beginnen wir mit der Definition beginnen

 
    maxrequests: How many requests does a child server before being killed 
       and a new one forked 
    maxspare : Maximum number of spare processes to keep running 
    minspare : Minimum number of spare processes to prefork 
    maxchildren: Hard limit number of processes in prefork mode 

Das bedeutet, dass Sie zu einem bestimmten Zeitpunkt höchstens maxchildren haben werden in Ihrem Webserver Prozesse ausgeführt, die jeweils maxRequests Anfragen für den Betrieb. Beim Serverstart erhalten Sie minSpare Prozesse, die weiter wachsen werden bis maxspare (oder maxchilds) wenn mehr Anfragen kommen.

So minspare können Sie sagen, wie viele gleichzeitige Anfragen werden Sie bei einem Minimum erwarten (wichtig, um die Prozesserstellung zu vermeiden, wenn Sie mit einem beginnen, es ist gut zu beginnen, sagen 10) und maxspare lässt Sie sagen, wie viele gleichzeitige Anfragen Ihr Server höchstens bearbeiten wird (ohne Kompromisse bei der erwarteten Antwortzeit usw.). Benötigt einen Stresstest zur Validierung. Und maxrequests spricht über die Lebensdauer jedes Kindes, für den Fall, dass sie nicht wegen irgendeiner Art von Einschränkung für immer laufen können.

+0

Gute Erklärung. Kannst du aber mehr über Maxrequests sagen? Das ist meine größte Sorge. Warum möchten Sie, dass ein Kindprozess nach einer bestimmten Anzahl von Anfragen stirbt? Vor möglichen Speicherlecks schützen? – ibz

+0

Ich kann nicht für jeden sprechen, aber mit Django und fastcgi haben wir eine Menge Speicherprobleme mit langlebigen Fastcgi-Prozessen gesehen. Wenn wir einen vernünftigen Wert für 'maxrequests' festlegen, müssen wir große Prozesse nicht manuell beenden, da sie nicht lange genug vorhanden sind, damit das Speicherleck großen Schaden anrichten kann. –

+0

Was ist der Unterschied zwischen maxchildren und maxspare? Sie scheinen mir überflüssig. –

-1

Vergessen Sie nicht, Ihre fcgi-Einstellungen mit Ihren Apache-Worker-Einstellungen zu koordinieren. Normalerweise halte ich mehr Apache-Arbeiter bei der Arbeit als fcgi-Arbeiter ... sie sind leichter und warten darauf, dass ein verfügbarer fcgi-Arbeiter frei wird, um die Anfrage zu bearbeiten, wenn die Nebenläufigkeit höher als mein maxspare ist.

+1

Lighttpd hat keine Apache-Mitarbeiter. – gw0

Verwandte Themen