服务器是要讲内存的规划的,如果规划的不合理就会有诸如cpu过高,内存占用过高的问题。
我们线上有一台机器,内存8G,运行的服务有elasticsearch,mysql,mongo,redis,nodejs我修改之前的内存是这样分配的:
es 1G,
mysql 1G,
mongo 1G,
node 0.8*4=3.2G,
redis 1G
系统 1G
那么出现的问题就是,cpu和内存经常占用过高,node程序时不时死掉。
经常查阅一些资料,做了如下的调整:
es 2G,
(按照官方的建议,es的内存设置最好是总内存的1/2,
我们退而求其次,按1/4来算,也就是说,如果
总内存为8g,那么至少要分配2g的内存给es,之前只能分到1g,
这快对es的性能折损比较大,其代价就是付出更高的cpu占用)
mysql 1G,
mongo 1G,
node 0.3*2=0.6G,
redis 1G
系统 2.4G ,
来看下优化前后的cpu和内存占用对比,
修改前:
image.png
修改后:
image.png
结语:虽然是重新规划了内存,但是如果要性能更好的话,要么扩容,显然8g是无法达到最佳性能的,要么把一些服务放到阿里云,比如es或者mysql
网友评论