我在一家托管公司有一台 VPS。我确实有一些使用 MySQL 的编写糟糕的 perl 脚本。我的 MySQL 服务器崩溃了。托管公司说服务器内存不足。当我的 VPS 没有流量时,我的托管公司运行了“免费”服务,结果如下。
total used free shared buffers cached
Mem: 1024 963 60 0 0 746
-/+ buffers/cache: 217 806
Swap: 0 0 0
他们说我只有 60 MB 可用空间。是这样吗?我需要升级内存吗?
答案1
是的,确实只有 60mb 是免费的,但这是正常的,因为 Linux 的设计目的是使用尽可能多的可用内存,通过缓存最大限度地提高性能。
当应用程序需要时,用于缓存的任何内存都会被释放。
因此,当前未使用的“空闲”内存与“可用”内存之间存在差异,后者可以用于某些用途,但可以根据需要提供给应用程序。
“可用”内存是最重要的,它是后面的最后一个数字-/+ buffers/cache:
。在您的例子中,是 806MB。
使用 MySQL 和不可靠的脚本,内存很快就会被消耗殆尽。
我建议添加一些交换空间,这样如果空间用完了,您的机器不会开始终止进程,而是可以扩展到磁盘备份存储以获取“额外”内存。这意味着它会开始缓慢运行而不是崩溃。
创建交换文件:
# dd if=/dev/zero of=/swap.tmp bs=1M count=1024
这将创建一个 1024MB 的空文件
# mkswap /swap.tmp
这会将文件变成可以用于交换空间的内容。
#swapon /swap.tmp
这将启用交换空间 - 看一下free
以查看差异。
然后编辑/etc/fstab
并通过添加此行(挂载根目录后)确保在启动时启用交换:
/swap.tmp none swap defaults 0 0
答案2
不。你应该看的是这一-/+ buffers/cache
行。第一行包括内核正在使用但必要时可以安全删除的内容(如缓存文件)。另请参阅https://serverfault.com/a/85481。