Python FastCGI maxrequests、maxspare、minspare和maxchildren使用哪些值?

Python FastCGI maxrequests、maxspare、minspare和maxchildren使用哪些值?,python,django,fastcgi,Python,Django,Fastcgi,我正在使用FastCGI和lighttpd运行Django应用程序 有人能解释一下,在决定Max请求、Max备用、MnField、Max Stabor、< /P>使用什么值时,我应该考虑什么? 这些选项没有很好的文档记录,但似乎相当重要 不要只告诉我他们做什么;我想了解它们有什么含义,以及我应该如何决定使用什么价值观 谢谢。让我们从定义开始 maxrequests: How many requests does a child server before being killed

我正在使用FastCGI和lighttpd运行Django应用程序

有人能解释一下,在决定Max请求、Max备用、MnField、Max Stabor、< /P>使用什么值时,我应该考虑什么? 这些选项没有很好的文档记录,但似乎相当重要

不要只告诉我他们做什么;我想了解它们有什么含义,以及我应该如何决定使用什么价值观


谢谢。

让我们从定义开始

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 maxrequests:一个子服务器在被终止之前需要执行多少个请求 一个新的分叉了 maxspare:保持运行的最大备用进程数 minspare:准备工作的最少备用进程数 maxchildren:在预工作模式下硬限制进程数 这意味着您在Web服务器中的任何给定时间都最多运行maxchildren进程,每个进程都运行maxrequests。在服务器启动时,您将得到minspare进程,如果有更多请求,它将一直增长到maxspare(或maxchildren)


因此,minspare允许您说出您期望的最小并发请求数(如果从一个开始,避免创建进程很重要,最好从10个开始),maxspare允许您说出您的服务器最多能处理多少并发请求(在不影响预期响应时间等的情况下。需要进行压力测试以验证)。maxrequests讨论的是每个孩子的生命周期,以防他们由于任何限制而无法永远运行。

不要忘记将fcgi设置与apache worker设置协调。我通常会保留比fcgi worker更多的apache worker…他们更轻,并且会等待可用的fcgi worker释放如果并发度高于我的maxspare,则最多可以处理请求。

这是一个很好的解释。但是,你能说更多关于maxrequests的内容吗?这是我最担心的问题。为什么你希望一个子进程在一定数量的请求后死亡?为了防止最终的内存泄漏?我不能代表所有人,尽管对于Django和fastcgi我们“在长寿命的fastcgi进程中,我们已经看到了很多内存问题。为
maxrequests
设置一个合理的值可以避免我们手动杀死大型进程,因为它们没有足够长的时间来造成内存泄漏。那么maxchildren和maxspare之间的区别是什么?它们对我来说似乎是多余的。这里有最多可以有
maxchildren
进程,并且最多可以有
maxspare
空闲进程(空闲、未使用、等待请求进程)。因此,maxchildren>=maxspare。