Linux Apache服务器系统设置与优化
2007-06-08 00:00:00 来源:WEB开发网但具体这个数值以多少为宜呢?当对性能要求较高时,可以用下面的方法确定如何配置此参数。
首先,估计你的最大可能并发的连接数,或者在高负载时用ps -ef|grep apache|wc命令测得最大进程数,通常MaxClients应该是这个数值的两倍左右。如果当前网站在高负载时的访问速度可以接受,但有拒绝服务现象,则应把此参数调大,如果无拒绝服务现象,但访问速度缓慢,则应减低此数值。
这个参数同时限制了MinSpareServers和MaxSpareServers的设置,它们不应该大于这个参数的设置。
对于重负载的机器来说,仅仅这么做还是不够的。
Apache允许为请求开的最大进程数是256,MaxClients的限制是 256.如果用户多了,用户就只能看到Waiting for reply....然后等到下一个可用进程的出现。这个最大数,是Apache的程序决定的--它的NT版可以有1024,但Unix版只有256,你可以在include/httpd.h中
看到: #ifndef HARD_SERVER_LIMIT #ifdef WIN32 #define HARD_SERVER_LIMIT 1024 #else #define HARD_SERVER_LIMIT 256 #endif #endif
你可以把它调到1024,然后再编译你的系统。记得在httpd.conf里也要更改相应配置。 MaxRequestsPerChild 30
使用子进程的方式提供服务的Web服务,常用的方式是一个子进程为一次连接服务,这样造成的问题就是每次连接都需要生成、退出子进程的系统操作,使得这些额外的处理过程占据了计算机的大量处理能力。因此最好的方式是一个子进程可以为多次连接请求服务,这样就不需要这些生成、退出进程的系统消耗, Apache就采用了这样的方式,一次连接结束后,子进程并不退出,而是停留在系统中等待下一次服务请求,这样就极大的提高了性能。
但由于在处理过程中子进程要不断的申请和释放内存,次数多了就会造成一些内存垃圾,就会影响系统的稳定性,并且影响系统资源的有效利用。因此在一个副本处理过一定次数的请求之后,就可以让这个子进程副本退出,再从原始的 httpd进程中重新复制一个干净的副本,这样就能提高系统的稳定性。这样,每个子进程处理服务请求次数由MaxRequestPerChild定义。缺省的设置值为30,这个值对于具备高稳定性特点的Linux系统来讲是过于保守的设置,可以设置为1000甚至更高,设置为0支持每个副本进行无限次的服务处理。 #Listen 3000 #Listen 12.34.56.78:80 #BindAddress *
更多精彩
赞助商链接