南京华籁云信息技术有限公司
18066058025 025-85999293
  1. 首页 > 解决方案 > 技术博客

服务器内存占用一直很高重启服务器后占用还是在逐渐上涨

作者:华籁云 日期:2019-10-13 11:08:40 点击数:

我有个配置比较低的搬瓦工 VPS,1G的内存。最近发现服务器内存占用一直很高,重启服务器后,内存占用还是在逐渐上涨,甚至连 swap 都会被占满。使用 top 命令查看进程内存使用情况,发现 httpd 进程占用内存过高,几乎占掉了系统内存的80%。

1-191013111112495.jpg

使用 top 命令查看进程内存占用

经查找各种资料,发现内存占用过高问题可能是受 httpd.conf 中的 MaxRequestsPerChild 参数影响。

MaxRequestsPerChild这个指令设定一个独立的子进程将能处理的请求数量。在处理“MaxRequestsPerChild 数字”个请求之后,子进程将会被父进程终止,这时候子进程占用的内存就会释放,如果再有访问请求,父进程会重新产生子进程进行处理。如果 MaxRequestsPerChild缺省设为0(无限)或较大的数字(例如10000以上)可以使每个子进程处理更多的请求,不会因为不断终止、启动子进程降低访问效率,但MaxRequestsPerChild设置为0时,如果占用了200~300M内存,即使负载下来时占用的内存也不会减少。是不是有点晕,简单来说就是,如果 MaxRequestsPerChild 参数设置为0,那么将不会终止子进程释放内存。


于是,使用 find 命令搜索该参数的配置文件 httpd-mpm.conf 所在位置。

# find / -name httpd-mpm.conf


发现其位于 /usr/local/apache/conf/extra/httpd-mpm.conf ,首先复制一个配置文件副本备份,以防不测。继续使用 vi 编辑器打开该文件,找到参数位置。需要注意,该参数名称在 Apache HTTP Server 2.3.9 及更高版本中已经修改为 MaxConnectionsPerChild。

通过 httpd -V 命令查看当前 Apache 运行模式,找到对应运行模式里的参数。可见该参数此时为0,尝试修改其为一个较小数值,我这里修改为50。

1-191013111122935.jpg

重启服务器,测试了1天,效果不错,内存和 swap 的占用率都下来了,成功。


关于我们:华籁云(nparadigmspc.com)隶属南京华籁云信息技术有限公司,是一家专注于网站及服务器综合业务提供商。服务包括:、、、、南京服务器维护南京网站维护,公司配有客服、技术、开发等部门,拥有数名安全专家,7*24为用户提供技术服务。

欢迎联系华籁云(HUALAIYUN)我们将竭诚为您服务!

接待地址:南京市文景路61号垠坤创芯汇(各区均有办公接待处) 贴心服务:一个电话免费预约来访或者上门洽谈


随便看看
 
锂电池 | 陕西防水材料 | 车辆检测器 | 化学试剂 | 河南聚合科技 | 河南新能源 |