我在具有 1GB RAM 的 Ubuntu 16.04 服务器上定期收到以下消息:
[4768052.693699] Out of memory: Killed process 1190 (mysqld) total-vm:2037464kBB
命令
ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -r | head -10
显示MySQL使用了31.1%的内存(不清楚是虚拟的还是RAM):
4.9 3.7 49324 1240772 node server.js production
4.2 0.1 42536 565796 php-fpm: pool slogpost
3.9 0.2 39068 566092 php-fpm: pool slogpost
3.2 0.2 31960 559592 php-fpm: pool devnote
3.2 0.2 31868 559736 php-fpm: pool devnote
31.3 0.5 310552 1381224 /usr/sbin/mysqld
2.7 0.3 27548 270584 php-fpm: pool beauty
2.6 0.3 25960 269612 php-fpm: pool beauty
1.0 0.0 10400 171716 (squid-1) -YC -f /etc/squid/squid.conf
命令
free -m
显示使用了 1023 个交换空间中的 461 个:
total used free shared buff/cache available
Mem: 968 544 59 48 363 182
Swap: 1023 461 562
1)在这种情况下常见的做法(或解决方案)是什么?
2) 我可以进行哪些诊断?如何确定应该为 MySQL 分配多少内存?以及如何确定哪个数据库使用了多少内存?
3)在什么情况下我应该增加RAM或交换?
4)将 RAM 增加到 2GB 是一个好主意吗?