WDCP内存优化相关的设置

www.vinbet.com

2018-10-27

今天折腾了很久▓▓▓▓,就在研究怎么优化WDCP的内存▓。 原因是买的小内存的vps总是担心内存不足▓▓▓,在后台看到1G的内存▓,很快就了好几百M左右▓。 如果放多个网站▓▓▓,岂不是马上就内存不足了▓。 在前面的文章中实际上也是担心VPS内存不足的问题:虽然搞清楚了建立一个新的网站就要占用更多的内存和进程▓▓,但是还是不明白怎么进行优化。

于是在度娘上找到,看到很多相关的资料▓,优化的关键与HTTPD进程的多少有关系▓,而这个东西又与下面几个量有关系:ServerLimit▓、StartServers、MinSpareServers、MaxSpareServers、MaxClients▓▓、MaxRequestsPerChild这几个量的相关解释,我看了很多篇文章,但是没有一篇讲的透彻清楚的▓▓。 先来看一个比较有代表性的解释:ServerLimit最大客户数StartServers服务器启动时建立的子进程数量MinSpareServers最小空闲子进程数MaxSpareServers最大空闲子进程数MaxClients同一时间客户端最大接入请求的数量MaxRequestsPerChild每个子进程在其生存期内允许伺服的最大请求数量类似上面的这种解释很多,但是都说的不够清晰▓▓。

看了几个小时的网上资料▓,还是理解的很模糊▓▓,下面把我自己的理解记录下来:1▓▓,StartServers服务器启动时建立的HTTPD进程数量,这个应该属于父进程2,MinSpareServers最小HTTPD空闲进程数量▓▓▓,这个虽然是空闲的父进程▓▓,但是它是有作用的▓▓▓,它的存在能够减少请求突然到来时▓,HTTPD进程数量不够,产生新的HTTPD进程的时间▓▓。 3▓▓,MaxSpareServers最大HTTPD空闲进程数量▓,这个用来控制▓,如果空闲HTTPD进程太多▓▓,会占用掉大量内存空间。

4▓▓▓,MaxClients这个参量最难理解▓▓,我个人理解是,每个访客访问网站时,网站的HTTPD进程用来处理和访客的交互操作,而每个HTTPD的大小每个网站应该是有所区别的。

这个MaxClients就代表了网站的HTTPD父进程的最大数量▓。 比如每个HTTPD占用20M内存空间▓,你VPS的剩余内存空间是200M(剩余空间是指总的内存减去系统以及其它服务已经占用的内存),那么你的MaxClients应该只有200M/20M=10个。

此时你最多只能设置为10▓,如果超过▓▓,那么VPS会调用硬盘空间作为内存不足的补充部分▓,但硬盘空间的访问速度实际上是很慢的▓,这样网站访问起来▓▓▓▓,就会有部分用户感觉很慢。 如果你这个数值设置的很小,也会有问题,比如本来要10个HTTPD才能满足需求,但你设置为了8▓▓▓,那么如果有10人访问▓,就会有后面的2人访问会比较慢▓,等到前面的8人链接断开▓,这2人的访问才会快▓▓▓。 ()5,MaxRequestsPerChild每个子进程在其生存期内允许伺服的最大请求数量,默认为0▓,则子进程不会自动销毁,这样子进程就可能占用内存越来越多,如果设置为1000▓,那么子进程在处理了1000个请求的时候会被父进程自动销毁,从而产生新的子进程,这样内存消耗就降低了▓▓。

(),但这里我也不明白怎么看子进程▓,还有子进程处理请求到底是处理的什么▓?虽然不太明白上面这些参量的意思▓▓,但是减小内存消耗确实知道怎么去控制了,比如我修改成这个样子时▓▓▓,内存消耗就比较大:IfModulempm_prefork_moduleServerLimit128StartServers5MinSpareServers18MaxSpareServers30MaxClients128MaxRequestsPerChild1000/IfModule原因是▓,我设置了最小空闲HTTPD进程为18个,这样的话▓,就算没有人访问,最少也要18个空闲HTTPD进程在等待状态▓▓。

如果你网站没什么流量,设置这么多的空闲HTTPD进程就完全是浪费▓▓,此时查看后台的实际内存占用情况▓,如图所示:而如果设置成下面这个样子,内存消耗就要小的多:IfModulempm_prefork_moduleServerLimit128StartServers5MinSpareServers5MaxSpareServers6MaxClients128MaxRequestsPerChild1000/IfModule后台实测在200M左右:原因很简单▓,你设置的空闲HTTPD进程只有5个了▓,最多是6个,空闲HTTPD进程相差10多个▓▓,而上面两幅图都是在访客差不多的情况下截图的▓▓,访客产生的HTTPD进程应该是差不多的▓▓▓。

这样就能减小后台的内存占用▓▓▓,不过如果短时间内流量暴涨▓▓▓,新的HTTPD进程只能一个个的产生▓▓,这样会降低访问速度▓▓。

具体怎么样,可以自己测试,也可以查看蜘蛛的抓取记录平均耗时来了解端倪。

而至于HTTPD是在什么样的情况下产生▓▓,什么样的情况下消失▓▓,我则弄不清楚了▓。 推荐阅读相关文章:。