小内存VPS prefork模式下httpd参数优化

小内存VPS httpd参数优化 小内存VPS优化, apache优化,httpd优化,prefork优化

小内存VPS指的是512MB内存或以下的VPS。现在apache2一般运行于perfork模式,可以使用httpd -l来确定当前使用的MPM是prefork.c,还是Worker.c。prefork模式下的默认配置可能会使VPS内存的使用出现问题。本人在调试一个512MB内存的VPS时开始时总是发现内存占用不断升高,并在很短的时间内最终耗尽内存。通过万能的搜索引擎,找到了问题 的解决方法,那就是对perfork模式参数进行调优,使其适应小内存环境。


调试方法:修改apache配置文件httpd.conf中mpm_prefork_module(不同的主机控制面板可能该配置文件所处的目录不同)各字段。先来了解各字段的含义:

ServerLimit 最大客户数,2000是这个参数的最大值,要放到最前面才会生效

StartServers 服务器启动时建立的子进程数量,指定服务器启动时建立的子进程数量,prefork默认为5.

MinSpareServers 最小空闲子进程数,空闲子进程的最小数量,默认为5.如果当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程.此参数不要设的太大.

MaxSpareServers 设置空闲子进程的最大数量,默认为10.如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程.此参数 不要设的太大.如果你将该指令的值设置为比MinSpareServers小,Apache将会自动将其修改成"MinSpareServers+1".

MaxClients 限定同一时间客户端最大接入请求的数量(单个进程并发线程数),默认为256.任何超过MaxClients限制的请求都将进入等候队列,一旦一个链接被释放,队列中的请求将得到服务.要增大这个值,你必须同时增大ServerLimit .

MaxRequestsPerChild 每个子进程在其生存期内允许伺服的最大请求数量,默认为10000.到达MaxRequestsPerChild的限制后,子进程将会结束.如果MaxRequestsPerChild为"0",子进程将永远不会结束.


知道了各字段含义,就可以根据系统资源重要是内存资源来设置合适的参数。对于小内存,自然各个字段数值要小,这样才能使得内存不会轻易耗尽,保证系统可以正常运行。

下面来进行具体的配置修改。在httpd.conf中找到<IfModule mpm_prefork_module>,这里就是apache在prefork模式下的参数段。将该段各值修改为以下数值:

<IfModule mpm_prefork_module>

ServerLimit 256

StartServers 2

MinSpareServers 2

MaxSpareServers 5

MaxClients 256

MaxRequestsPerChild 50

</IfModule>

经过上述设置之后,httpd子进程数保持在最小2个,多余的进程在处理请求超过50个后自动销毁释放内存,从而保证在正常流量下内存得以及时释放。经过上述优化后,512MB内存的vps正常流量情况godaddy 优惠码下就没有内存耗尽的情况了,而是可以得到及时的释放,保证新的访问请求有内存可以分配。


你可能感兴趣的:(小内存vps,httpd参数优化)