事情經過
最近剛接手一個多次獲得海外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的記錄,再到進程運行目錄下查看了宕機前的堆棧信息,日志如下: