我正在尝试在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是否存在连接/内存限制?谢谢!
答案 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。