需要多少内存(测量实际用量)
在选择套餐或独立服务器时,最让人困惑的就是内存。如果已经有正在使用的服务器,测量实际用量后再决定是最准确的。
1. 查看服务器整体用量
free -h
请看 available,而不是 used。这是新程序实际还能使用的量。buff/cache 是 Linux 暂时借用、需要时会归还的内存,不必担心。(各项含义请参考查看我的服务器配置)
Windows 服务器可以在任务管理器(Ctrl + Shift + Esc)→ 性能 → 内存 中查看正在使用的量和可用的量。
2. 查看各程序的用量
ps -eo pid,rss,comm --sort=-rss | head -n 11
按内存占用从多到少显示 10 个程序。RSS 是程序实际占用的内存,单位为 KB。(1,024 为 1MB,1,048,576 为 1GB)
Windows 服务器可以在任务管理器的 进程 标签页中点击内存列标题,按占用从多到少排序。
3. 以用量最多的时候为准来决定
内存在访问者最多时、运行备份或更新时用得最多。比起测一次就结束,记录一整天的数据就能知道最大值。
while true; do echo "$(date '+%F %T') $(free -m | awk '/^Mem/ {print "used=" $3 "MB available=" $7 "MB"}')"; sleep 60; done >> ~/mem.log
每 1 分钟将用量写入 ~/mem.log。按 Ctrl + C 停止;如果想在关闭窗口后继续记录,请在 screen、tmux 中运行。收集完毕后,找出余量最少的时刻。
sort -t= -k3 -n ~/mem.log | head -n 3
即使在这个时刻 available 也仍然充足的配置才合适。如果不清楚确切的标准,建议像如何选择 VPS 配置(按用途推荐配置)中那样,留出余量选择高一档。
4. 按用途需一并查看的内容
- Minecraft Java 服务器 —— 服务器内存需要的是给游戏的内存(
-Xmx)加上操作系统所需的部分。操作系统所需部分,Linux 请预留 1~2GB,Windows 请预留 2~3GB。Java 实际使用的内存会比-Xmx设定的值多一些,因此不能让它与服务器内存刚好相等。(搭建 Minecraft 服务器(Java 版,Paper、原版)) - Windows 服务器 —— 操作系统占用的内存比 Linux 多,即使是同样的程序,内存也需要更充裕。小套餐有时无法选择 Windows Server。(在价格页面中显示为“不支持 Windows Server”)
- Discord 机器人 —— 大多数情况下少量内存就足够,如果只有一个机器人,从最小的套餐开始也可以。如果是音乐机器人这类繁重的工作,请选择高一档的套餐。
- 数据库 —— 内存越充裕,就越能把常用数据放在内存中处理,速度会更快。
- 同时运行多个程序 —— 请将每个程序用量最多时的用量相加来计算。
5. 内存不足时会发生什么
Linux 在内存耗尽时会强制终止某个程序。如果程序无缘无故地退出了,请先确认这一点。
sudo dmesg -T | grep -i -E "out of memory|killed process"
如果有结果输出,就是因内存不足而退出的。