linux系统,2G内存,MySQL经常被杀,
查看系统日志:
less /var/log/messages
以下是部分日志内容:
Apr 7 10:24:45 localhost kernel: Out of memory: Kill process 53320 (mysqld) score 93 or sacrifice child
Apr 7 10:24:45 localhost kernel: Killed process 53320 (mysqld) total-vm:1445004kB, anon-rss:16532kB, file-rss:0kB, shmem-rss:0kB
Apr 7 10:24:52 localhost kernel: mysqld invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0
Apr 7 10:24:52 localhost kernel: mysqld cpuset=/ mems_allowed=0
Apr 7 10:24:52 localhost kernel: CPU: 1 PID: 57992 Comm: mysqld Kdump: loaded Not tainted 3.10.0-957.21.3.el7.x86_64 #1
Apr 7 10:24:52 localhost kernel: Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
Apr 7 10:24:52 localhost kernel: Call Trace:
Apr 7 10:24:52 localhost kernel: [<ffffffffa4b63107>] dump_stack+0x19/0x1b
Apr 7 10:24:52 localhost kernel: [<ffffffffa4b5db2a>] dump_header+0x90/0x229
Apr 7 10:24:52 localhost kernel: [<ffffffffa4501292>] ? ktime_get_ts64+0x52/0xf0
Apr 7 10:24:52 localhost kernel: [<ffffffffa45584df>] ? delayacct_end+0x8f/0xb0
Apr 7 10:24:52 localhost kernel: [<ffffffffa45ba834>] oom_kill_process+0x254/0x3d0
Apr 7 10:24:52 localhost kernel: [<ffffffffa45ba2dd>] ? oom_unkillable_task+0xcd/0x120
Apr 7 10:24:52 localhost kernel: [<ffffffffa45ba386>] ? find_lock_task_mm+0x56/0xc0
Apr 7 10:24:52 localhost kernel: [<ffffffffa45bb076>] out_of_memory+0x4b6/0x4f0
Apr 7 10:24:52 localhost kernel: [<ffffffffa4b5e62e>] __alloc_pages_slowpath+0x5d6/0x724
Apr 7 10:24:52 localhost kernel: [<ffffffffa45c1454>] __alloc_pages_nodemask+0x404/0x420
Apr 7 10:24:52 localhost kernel: [<ffffffffa460e308>] alloc_pages_current+0x98/0x110
Apr 7 10:24:52 localhost kernel: [<ffffffffa45b6697>] __page_cache_alloc+0x97/0xb0
Apr 7 10:24:52 localhost kernel: [<ffffffffa45b92f8>] filemap_fault+0x298/0x490
Apr 7 10:24:52 localhost kernel: [<ffffffffc03ce186>] ext4_filemap_fault+0x36/0x50 [ext4]
Apr 7 10:24:52 localhost kernel: [<ffffffffa45e47ea>] __do_fault.isra.59+0x8a/0x100
Apr 7 10:24:52 localhost kernel: [<ffffffffa45e4d9c>] do_read_fault.isra.61+0x4c/0x1b0
Apr 7 10:24:52 localhost kernel: [<ffffffffa45e9744>] handle_pte_fault+0x2f4/0xd10
Apr 7 10:24:52 localhost kernel: [<ffffffffa45ec27d>] handle_mm_fault+0x39d/0x9b0
Apr 7 10:24:52 localhost kernel: [<ffffffffa4b70603>] __do_page_fault+0x203/0x4f0
Apr 7 10:24:52 localhost kernel: [<ffffffffa4b709d6>] trace_do_page_fault+0x56/0x150
Apr 7 10:24:52 localhost kernel: [<ffffffffa4b6ff62>] do_async_page_fault+0x22/0xf0
Apr 7 10:24:52 localhost kernel: [<ffffffffa4b6c798>] async_page_fault+0x28/0x30
调整mysql 的oom_score值。
我们可以在用户空间通过操作每个进程的 oom_adj 内核参数来决定哪些进程不这么容易被 OOM killer 选中杀掉。比如,如果不想 MySQL 进程被轻易杀掉的话可以找到 MySQL 运行的进程号后,调整 oom_score_adj 为 -15(注意 points 越小越不容易被杀)
查看当前mysql 的oom_score值:
cat /proc/$(pidof mysqld)/oom_score
当前配置mysql的值:
cat /proc/$(pidof mysqld)/oom_score_adj
修改配置:
echo '-20' > /proc/$(pidof mysqld)/oom_score_adj
先观察观察运行情况吧,不知道是否有用。
参考:https://www.cnblogs.com/luckyall/p/11946943.html
http://blog.chinaunix.net/uid-25206403-id-3549190.html
更新:2020.4.8好像不是这个的问题,MySQL再次停止了。
试试减少php-fpm子进程数量,将max_children的值由50改为25。
参考:【解决Linux下php-fpm进程过多导致内存耗尽问题】https://www.jb51.net/article/129528.htm