最近有很多小伙伴反馈说4C16G的服务器玩时间久了经常出现内存过满自动重启的情况,优化方案总体上就是定时进行内存清理,调大虚拟内存,一方面进行内存清理,另一方面通过增加虚拟内存来增加可用内存总量,然后再结合低峰期进行游戏重启来进行内存清理,可以比较有效地解决内存增长过快游戏自动重启的问题。下面分别总结下linux和windows系统下怎么进行优化。
WINDOWS系统下的内存优化方式
1. 安装Memreduct软件进行定期内存清理
Memreduct软件是一款windows系统下可以进行内存清理的软件,小巧而强大,400KB大小,支持手动进行内存清理、定时清理、按内存阈值进行清理等多种方式清理内存,下载链接见 Memreduct 下载地址。
- 手动清理内存,点击清理内存,可以看到物理内存使用率从14%到了7%。
- 定时清理设置,点击文件中的设置,选择内存清理,可以启用定时清理,这里设置为30分钟清理一次。
- 按内存阈值进行清理,这里设置达到内存的90%进行清理。
2. 服务定时重启
可以使用计算巢运维管理的定时重启功能,定时重启能有效清理内存,但会影响玩游戏,建议每天凌晨定时进行重启。
3. 增加虚拟内存
开启虚拟内存教程见链接,默认虚拟内存大小为2G,可以设置虚拟内存为16G,这样可以有效解决游戏卡顿。
- 在操作系统设置->高级系统设置->设置,去修改虚拟内存大小。
- 修改虚拟内存大小,将最小虚拟内存设置为8G,最大虚拟内存设置为16G,然后重启系统即可生效。
Liunx系统下的内存优化方式
1.定期进行内存清理
可以写个shell脚本进行定时清理,脚本内容如下,先强制将缓存sync到磁盘,然后进行页面缓存和缓冲缓存的清理:
echo "开始清除缓存" sudo sync; #写入硬盘,防止数据丢失 sleep 15 #延迟15秒 echo 3 > /proc/sys/vm/drop_caches
然后设置crontab定时任务,执行定时任务,crontab -e进行设置。
# 每小时进行一次清理 0 */1 * * * bash /usr/local/clear-cache.sh
2. 服务定时重启
这个和windows系统一样,可以使用计算巢运维管理的定时重启功能,定时重启能有效清理内存,但会影响玩游戏,建议每天凌晨定时进行重启。
3. 增加虚拟内存
在服务器上执行下面的shell脚本,就可以实现虚拟内存增加。
mem=16G if ! grep -q 'swapfile' /etc/fstab; then sudo fallocate -l $mem /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile cat /etc/fstab |grep swapfile || echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab fi