共享型小内存服务器MySQL经常宕机的解决方案

原创 zhaoliang  2018-10-13 20:32  阅读 502 views 次

前段时间为博客换了台内存较小的云服务器,内存只有512M,确实是有点小,图个便宜哈,但也因此遇到了非常让我头疼的问题--数据库经常挂掉,导致博客无法访问。查看MySQL日志可以看到,主因其实还是内存问题

2018-06-14 22:48:19 11104 [Note] Plugin 'FEDERATED' is disabled.
2018-06-14 22:48:21 11104 [Note] InnoDB: Using atomics to ref count buffer pool pages
2018-06-14 22:48:21 11104 [Note] InnoDB: The InnoDB memory heap is disabled
2018-06-14 22:48:21 11104 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2018-06-14 22:48:21 11104 [Note] InnoDB: Memory barrier is not used
2018-06-14 22:48:21 11104 [Note] InnoDB: Compressed tables use zlib 1.2.3
2018-06-14 22:48:21 11104 [Note] InnoDB: Using Linux native AIO
2018-06-14 22:48:21 11104 [Note] InnoDB: Using CPU crc32 instructions
2018-06-14 22:48:21 11104 [Note] InnoDB: Initializing buffer pool, size = 128.0M InnoDB: mmap(137363456 bytes) failed; errno 12
2018-06-14 22:48:21 11104 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2018-06-14 22:48:21 11104 [ERROR] Plugin 'InnoDB' init function returned error.
2018-06-14 22:48:21 11104 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2018-06-14 22:48:21 11104 [ERROR] Unknown/unsupported storage engine: InnoDB
2018-06-14 22:48:21 11104 [ERROR] Aborting

搜了好些优化的参数,什么innodb_use_sys_malloc、innodb_buffer_pool_size之类的,前几感觉似乎有点作用,但没两天发现也只是频率减少了些而矣,未从根本上解决问题。

MySQL安装时使用用yum安装的5.6.40的版本,自MySQL 5.6.2开始就已经不再被赞成使用innodb_use_sys_malloc和innodb_additional_mem_pool_size这两项配置了,更是在5.8开始直接移除该参数项。关键一点:innodb_use_sys_malloc和innodb_additional_mem_pool_size也不可以同时存在的。所以每次启动MySQL服务时,日志中都会有一条这样的警告信息。

InnoDB: Warning: Setting innodb_use_sys_malloc to FALSE is DEPRECATED. This option may be removed in future releases, together with the InnoDB's internal memory allocator.

问题分析

1.主因应该还是云服务器内存太小的问题,如果有条件,建议还是优先使用1G内存及以上的服务
2.MySQL未能配置适合服务的最优配置

解决方案

1.通过不断修改innodb_buffer_pool_size的数值,先后由256M逐次递减,最后设定到64M时,发现服务死掉的时间间隔比较长了,由频繁时的一天几次递减到几天一次,但仍然不知道会在什么时间死掉
2.写了一个Shell监控MySQL进程的脚本,每5分钟执行一次,在监测到服务死掉后自动重启MySQL服务

附MySQL服务监测执行脚本截图

mysql监测重启脚本

本文地址:http://blog.58cm.cn:8088/archives/538.html
版权声明:本文为原创文章,版权归 zhaoliang 所有,欢迎分享本文,转载请保留出处!

评论已关闭!