为什么我的服务器显示
total used free shared buffers cached
Mem: 12286456 11715372 571084 0 81912 6545228
-/+ buffers/cache: 5088232 7198224
Swap: 24571408 54528 24516880
Run Code Online (Sandbox Code Playgroud)
我不知道在 linux 中计算内存。我认为它说 5088232 用于 7198224 是免费的,这意味着它实际上消耗了 5GB 的 RAM?
这是一个关于 Unix 操作系统如何报告内存使用情况的规范问题。
类似问题:
我有运行Debian 6.0.6 Squeeze 的生产服务器
#uname -a
Linux debsrv 2.6.32-5-xen-amd64 #1 SMP Sun Sep 23 13:49:30 UTC 2012 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
每天cron以 root 身份执行备份脚本:
#crontab -e
0 5 * * * /root/sites_backup.sh > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
#nano /root/sites_backup.sh
Linux debsrv 2.6.32-5-xen-amd64 #1 SMP Sun Sep 23 13:49:30 UTC 2012 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
一切正常,但我注意到 Munin 的内存图显示备份后缓存和缓冲区的增加。
然后我只是下载备份文件并删除它们。删除后 Munin 的内存图将缓存和缓冲区返回到备份前的状态。
这是穆宁图: …
我正在寻找一种诊断问题的方法,例如交换死亡,其中膨胀内存进程填满交换并杀死整个机器(例如 apache)。
我已经在使用 cacti,我可以设置 nagios(虽然宁愿不这样做)或 munin,但据我所知,他们无法记录单个程序的使用情况 - 只是整体状态。
我知道我可以每 30 秒将一个 >> 脚本滚动到某个文件,但我想看看是否已经存在现有的成熟解决方案。
同样,理想情况下它会:
进程名称不是也不应该提前知道 - 想法是让它监控然后查看顶级违规者。
我的系统是 Linux (OpenSUSE)。
由于 oom-killer 启动,我的 VPS Web 服务器在 CentOS 5.4(Linux 内核 2.6.16.33-xenU)上不规则地运行(例如每月一次或需要几周)变得无响应。服务器的监控表明它没有通常用完内存,只是每隔一段时间。
我已经阅读了一些指向此页面的博客,其中讨论了使用以下 sysctl 设置来配置内核以更好地管理过度使用:
vm.overcommit_memory = 2
vm.overcommit_ratio = 80
Run Code Online (Sandbox Code Playgroud)
我对此的理解(这可能是错误的,但我找不到一个规范的定义来澄清)是,这可以防止内核过度分配超出交换区 + 80% 物理内存的内存。
但是,我还阅读了一些其他来源,表明这些设置不是一个好主意 - 尽管这种方法的批评者似乎在说“不要做破坏您的系统的事情,而不是尝试这种混乱”的假设因果关系总是已知的。
所以我的问题是,在托管大约 10 个低流量站点的 Apache2 Web 服务器的上下文中,这种方法的优缺点是什么?在我的特定情况下,Web 服务器有 512Mb RAM,1024Mb 交换空间。大多数情况下,这似乎已经足够了。
这里的输出free -m:
total used free shared buffers cached
Mem: 7188 6894 294 0 249 5945
-/+ buffers/cache: 698 6489
Swap: 0 0 0
Run Code Online (Sandbox Code Playgroud)
我可以看到几乎6GB(5945MB)内存7GB用于缓存文件。我知道如何刷新缓存。我的问题是:是否可以查看正在缓存哪些文件(或 inode)?
在 2.6.31-302 x86-64 内核上运行 Ubuntu。总体问题是我在“缓存”类别中的内存不断增加,即使我们的应用程序需要它也不会被释放或使用。
所以这就是我从“免费”命令中得到的。乍一看,这些都没有异常。
# free
total used free shared buffers cached
Mem: 7358492 5750320 1608172 0 7848 1443820
-/+ buffers/cache: 4298652 3059840
Swap: 0 0 0
Run Code Online (Sandbox Code Playgroud)
有人会说的第一件事是“别担心,Linux 会自动管理该内存。” 是的,我知道内存管理器应该如何工作;问题是它没有做正确的事情。此处“缓存”的 1.4 GB 似乎已保留且无法使用。
我对 Linux 的了解告诉我 3 GB 是“免费的”;但系统的行为则不然。当 1.6 GB 的实际空闲内存在使用高峰期用完时,一旦需要更多内存(并且第一列中的“空闲”接近 0),就会调用 OOM 杀手,进程被杀死,并且问题开始出现即使-/+ 缓冲区/缓存行中的“空闲”仍然有大约 1.4 GB 的“空闲”。
我已经调整了关键进程的 oom_adj 值,所以它不会使系统陷入困境,但即使如此,重要的进程也会被杀死,我们永远不想达到那个点。特别是当理论上 1.4GB 仍然是“免费的”时,如果它只会驱逐磁盘缓存。
有谁知道这里发生了什么?互联网上充斥着关于 Linux 'free' 命令和“为什么我没有任何可用内存”的愚蠢问题,因此我找不到关于这个问题的任何信息。
我脑海中浮现的第一件事是交换已关闭。我们有一个坚定不移的系统管理员;如果他们得到支持,我愿意接受解释。这会导致问题吗?
运行后这里是免费的echo 3 > /proc/sys/vm/drop_caches:
# free
total used free shared buffers cached
Mem: 7358492 5731688 …Run Code Online (Sandbox Code Playgroud) 我已经阅读了很多有关规划 ZFS 重复数据删除的 RAM 要求的信息。我刚刚升级了我的文件服务器的 RAM,以支持 ZFS zvol 上的一些非常有限的重复数据删除,我无法在这些 zvol 上使用快照和克隆(因为它们是格式化为不同文件系统的 zvol),但会包含大量重复数据。
我想确保我添加的新 RAM 将支持我打算进行的有限重复数据删除。在计划中,我的数字看起来不错,但我想确定。
如何判断实时系统上 ZFS 重复数据删除表 (DDT)的当前大小?我阅读了这个邮件列表线程,但我不清楚他们是如何获得这些数字的。(zdb tank如有必要,我可以发布输出,但我正在寻找可以帮助其他人的通用答案)
有没有办法让我查看 ubuntu linux 服务器上的 CPU 或内存使用情况?我注意到我的服务器(灯设置)有时很慢,但是当我以 root 身份登录并运行 PS 命令时,一切可能已经恢复正常。
查看服务器不同部分消耗的资源的日志会很棒。
我希望有人能帮帮忙。我们有一台带有 16GB RAM的Windows Server 2008 R2机器,它的所有可用内存不断被某些东西吃掉。在没有任务管理器或资源监视器显示使用300MB以上的内存中的任何程序......但在服务器上的内存使用量是15.7GB。

唯一运行的是SQL Server 2008和IIS7.5(使用 ASP.Net)。
注意:重新启动后的 RAM 使用率开始较低并逐渐增加。一周左右后,我们不断在这种情况下发现自己。
我怎样才能发现是什么吞噬了我们所有的记忆?:(
windows-server-2008 memory performance-monitoring task-manager memory-usage
这是我的free和smem输出:
danslimmon@bad-server:~$ free -m
total used free shared buffers cached
Mem: 30147 29928 218 6 4 3086
-/+ buffers/cache: 26837 3309
Swap: 0 0 0
danslimmon@bad-server:~$ smem -tw
Area Used Cache Noncache
firmware/hardware 0 0 0
kernel image 0 0 0
kernel dynamic memory 12857576 2887440 9970136
userspace memory 17661400 1272468 16388932
free memory 351592 351592 0
----------------------------------------------------------
30870568 4511500 26359068
Run Code Online (Sandbox Code Playgroud)
这是我的top输出的头部,按 RSS 排序:
top - 15:51:13 up 248 days, 14:20, 1 user, load …Run Code Online (Sandbox Code Playgroud) memory-usage ×10
linux ×8
memory ×3
cpu-usage ×1
disk-cache ×1
linux-kernel ×1
monitoring ×1
performance ×1
solaris ×1
task-manager ×1
top ×1
unix ×1
web-server ×1
zfs ×1