事情经过
最近刚接手一个多次获得海外GooglePlay推荐的SLG的游戏项目,服务器是java的netty框架写的,客户端是cocos lua。
好吧既然服务器进程运行在jvm之上,吃内存倒是挺厉害的,我一个16G内存的服务器被吃的满满的,这个时候为了解决内存不足,我开启了4G的虚拟内存,方法如下:
sudo dd if=/dev/zero of=/swapfile bs=256M count=16
sudo mkswap /swapfile
sudo swapon /swapfile
#开机自动启动
echo "/mnt/swapfile swap swap defaults 0 0 " >> /etc/fstab#After compiling, you may wish to
#Code:
sudo swapoff /swapfile
sudo rm /swapfile
开启虚拟内存之后就在线上稳定运行了半年多,突然有一天一个游戏服务进程被oom杀死了,首先我从/var/log/message里看到oom的记录,再到进程运行目录下查看了宕机前的堆栈信息,日志如下: