线上的一套MySQL 5.6的从库,因为OOM而导致数据库重启。
# tail -50 /var/log/messages
Nov 13 16:00:40 app-push-db2 kernel: Out of memory: Kill process 26121 (mysqld) score 957 or sacrifice child
Nov 13 16:00:40 app-push-db2 kernel: Killed process 26121 (mysqld) total-vm:18804176kB, anon-rss:15541596kB, file-rss:0kB, shmem-rss:0kB
报错原因:
这台实例所在的服务器上面部署了单实例MySQL,物理内存为16G,分配给数据库的缓存innodb_fuffer_pool_size为12G。
# free -g
total used free shared buff/cache available
Mem: 15 10 0 0 5 4
Swap: 0 0 0
为了提高性能,这台实例关闭了磁盘的swap交换。
# cat /etc/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
swapoff -a
当客户端连接多的时候,导致内存资源耗尽。
解决方法:
将innodb_buffer_pool_size调整为10G,预留出一些内存给操作系统和客户端连接。
重启数据库,使参数生效。
# grep innodb_buffer_pool /etc/my.cnf
innodb_buffer_pool_size=10G
亿速云「云数据库 MySQL」免部署即开即用,比自行安装部署数据库高出1倍以上的性能,双节点冗余防止单节点故障,数据自动定期备份随时恢复。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:http://blog.itpub.net/26506993/viewspace-2219859/