2008-12-26 15 views
5

Używam aplikacji Django przy użyciu FastCGI i lighttpd.Jakie wartoś ci należy stosować do maks. Zapytań FastCGI, maxspare, minspare, maxchildren?

Czy ktoś może mi wyjaśnić, co powinienem wziąć pod uwagę przy podejmowaniu decyzji o tym, jaką wartość użyć w przypadku maxrequestów, maxspare, minspare, maxchildren?

Te opcje nie są zbyt dobrze udokumentowane, ale wydają się dość ważne.

Nie mów mi tylko, co robią; Chcę zrozumieć, jakie mają one konsekwencje i jak powinienem zdecydować, jakich wartości użyć.

Dzięki.

Odpowiedz

13

Zacznijmy od definicji

 
    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 

Oznacza to, że będziesz miał co najwyżej maxchildren procesy uruchomione w danym momencie na swoim serwerze, każdy działa na maxrequests żądań. Na starcie serwera otrzymasz procesy minspare, które będą nadal rosły do ​​maxspare (lub maxchildren), jeśli nadchodzi więcej żądań.

Więc minspare pozwala powiedzieć, ile jednoczesnych żądań ty oczekując na minimum (ważne, aby uniknąć tworzenia procesu, jeśli zaczniesz z jednym, dobrze jest rozpocząć w, powiedzmy 10) i maxspare pozwala mówisz, ile równoczesnych żądań serwer będzie obsługiwał co najwyżej (bez wpływu na oczekiwany czas odpowiedzi itd. Wymaga testu warunków skrajnych do sprawdzenia poprawności). I maxrequests mówi o życiu każdego dziecka, na wypadek gdyby nie mogły działać wiecznie z powodu jakiegokolwiek przymusu.

+0

Dobre wyjaśnienie. Czy możesz jednak powiedzieć więcej o maxrequestach? To jest mój największy problem. Dlaczego chcesz, aby proces potomny umarł po określonej liczbie próśb? Aby chronić przed ewentualnymi wyciekami pamięci? – ibz

+0

Nie mogę mówić za wszystkich, chociaż z Django i fastcgi mieliśmy wiele problemów z pamięcią z długotrwałymi procesami fastcgi. Ustawienie rozsądnej wartości dla 'maxrequests' uniemożliwia nam ręczne zabijanie dużych procesów, ponieważ nie są one wystarczająco długie, aby wyciek pamięci mógł wyrządzić wiele szkód. –

+0

Jaka jest różnica między maxchildren i maxspare? Wydają mi się zbędni. –

-1

Nie zapomnij skoordynować ustawień fcgi z ustawieniami roboczymi Apache. Zwykle przechowuję więcej robotników apache niż pracowników fcgi ... są oni lżejsi i będą czekać na dostępnego pracownika fcgi, aby zwolnić proces przetwarzania żądania, jeśli współbieżność osiągnie wartość wyższą niż mój maxspare.

+1

Lighttpd nie ma pracowników Apache. – gw0