MySQL 5.6因為OOM導致資料庫重啟

feelpurple發表於2018-11-13

線上的一套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



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26506993/viewspace-2219859/,如需轉載,請註明出處,否則將追究法律責任。

相關文章