给阿里云服务器添加swap交换区,避免OOM Killer
[文章作者:磨延城 转载请注明原文出处: https://mo2g.com/view/124/ ]
查找了一些资料,了解到Linux系统有一种内存保护机制(OOM Killer),避免Linux系统在内存不足的时候,影响系统内核正常运行,就会kill一些“不重要”的进程.内存不够用?不是有虚拟内存(swap交换区)的吗?当我再次观察htop的时候,发现swp为0/0MB!
最近客服那边反映,新注册的用户怎么没有获得相应的奖励了?
我连接服务器htop查看了一下进程,果然,我写的PHP守护进程消失了,一开始以为是自己崩溃了,没在意,就重新运行守护进程。
过了几天,客服突然反映怎么打不开网站了?
我打开主页一看,噢,雪特!Mysql数据库连不上了,马上登录服务器看看怎么回事。htop里找不到Mysql进程了
/etc/init.d/mysql status
也显示Mysql未运行
ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists
当务之急,就是让mysql恢复工作
/etc/init.d/mysql start
网站能正常试用后,我查看了一下log
vi /var/log/messages
发现如下提示
kernel: Out of memory: Kill process 6666 (mysqld) score 147 or sacrifice child
查找了一些资料,了解到Linux系统有一种内存保护机制(OOM Killer),避免Linux系统在内存不足的时候,影响系统内核正常运行,就会kill一些“不重要”的进程。
内存不够用?不是有虚拟内存(swap交换区)的吗?当我再次观察htop的时候,发现swp为0/0MB!
好吧,我突然想起来,通过阿里云安装的系统,似乎不会自动给我们分配swap虚拟内存空间。
在升级服务器配置前,就先给系统加上一块1GB大小的虚拟内存,防止Linux再大开杀戒。
cd /var/ dd if=/dev/zero of=swapfile bs=1024 count=1048576 #创建大小为1G的文件swapfile mkswap swapfile #格式化虚拟内存文件 swapon swapfile #激活虚拟内存文件
再编辑自动挂载文件,让系统开机的时候自动加载虚拟内存文件
vi /etc/fstab
添加如下代码
/var/swapfile swap swap defaults 0 0
我来说两句: