MaxRequestWorkers 指令

MaxRequestWorkers 指令

我有一个在 Linux 机器上运行的 apache prefork 模块 http 服务器。该机器有 8GB RAM。我的 /etc/httpd/conf/httpd.conf 中有以下内容:

<IfModule prefork.c>
    StartServers       8
    MinSpareServers    5
    MaxSpareServers   20
    ServerLimit      512
    MaxClients       512
    MaxRequestsPerChild  4000
</IfModule>

问题是,256 个子进程之后不再有子进程被分叉,请求被排队。我可以看到在重负载下子进程的数量停留在 256 个。

一个httpd进程的平均内存大约为3.69MB。

答案1

除了将MaxClientsServerLimit 设置增加到 512 之外,您还需要将其提高 MaxRequestWorkers512

引自精美手册

...需要同时处理超过 256 个请求的网站可能需要增加MaxRequestWorkers...

再进一步:

MaxRequestWorkers 指令

描述:同时处理的最大连接数
句法: MaxRequestWorkers number

该指令设置了同时处理 的MaxRequestWorkers请求数限制。任何超过限制的连接尝试MaxRequestWorkers通常都会排队
...
非线程服务器(即 prefork)MaxRequestWorkers表示将启动来处理请求的最大子进程数。默认值为 256;为了增加它,你还必须提高ServerLimit

相关内容