ecs云服务器 mysql经常自动停止挂掉重启问题分析
我的ecs服务器为1g内存的配置,在部署了nginx,mysql,redis,node服务后跑起项目来,(mysql使用默认配置),每过几天便发现了经常会出现数据库自动停止挂掉,然后几分钟后重启的现象,与此同时ecs无法登陆,当然,网站也是无法访问了。
后来联系了ecs的工单支持,他们查看了系统日志后说是内存不足,给出了增加虚拟内存的方案。
这里是 free -m
的查看信息
free -m
total used free shared buff/cache available
Mem: 992 504 76 0 411 322
Swap: 3023 133 2890
这里是我尝试的增加虚拟内存,可以很明显的看到swap由0变成 3023,但实际应用中发现效果并不显著。
如果想要删除虚拟内存,则使用这里
后来通过观察内存的变化,发现以下:
total used free shared buff/cache available
Mem: 992 504 76 0 411 322
Swap: 3023 133 2890
total used free shared buff/cache available
Mem: 992 533 303 0 155 300
Swap: 3023 133 2890
比较发现,是由于buff/cache的占比过高,导致内存Mem的free较低,使用以下方法手动清除buff/cache
;
echo 1 > /proc/sys/vm/drop_caches:表示清除pagecache。
echo 2 > /proc/sys/vm/drop_caches:表示清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。
echo 3 > /proc/sys/vm/drop_caches:表示清除pagecache和slab分配器中的缓存对象。
手动清除buff/cache
的方法取自这里