运行cgi程序时Apache Service是否存在连接/内存限制?

时间:2012-07-10 15:07:33

标签: windows perl apache process windows-services

我正在尝试在Apache 2.0 / 2.2 / 2.4上同时运行数百个cgi程序(perl或其他语言)。我的测试环境是带有1GB RAM的Windows Server 2003 R2。

在程序中,我使用无限循环或“$ _ =< STDIN>”保持每个进程的活力。在Apache配置中,我将所有相对配置设置得足够大,如ThreadPerChild为1000.然后我使用JMeter测试200个请求。当我在控制台应用程序中运行Apache时,它工作正常,所有200个cgi进程正在运行。但是,当我将Apache作为Windows服务运行时,只有60-100个进程将并发运行。其他人不会开始,除非我杀死任何正在运行的进程我不是造成这种情况的原因。运行cgi程序时Apache Service是否存在连接/内存限制?谢谢!

1 个答案:

答案 0 :(得分:2)

MaxClients文件中的

httpd.conf参数设置apache服务器的最大连接数限制。 默认连接限制为256。

您可以打开httpd.conf文件并搜索MaxClients来检查服务器。

linux中httpd.conf的默认位置是/etc/httpd/conf/httpd.conf

在Windows上,conf文件的默认位置为C:/Program Files/Apache Group/Apache/conf/httpd.conf

它看起来像这样。

# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

您可以将MaxClients值设置为所需的值,然后重新启动服务器以应用chages。