我有一台 Linux 机器,它没有在软件方面运行太多,但不知何故使用了 2GB 已安装内存中的 1.7GB。当我自由奔跑时,我得到:
total used free shared buffers cached
Mem: 2072616 1979972 92644 0 164876 129740
-/+ buffers/cache: 1685356 387260
Swap: 498004 1632 496372
Run Code Online (Sandbox Code Playgroud)
当我运行时top,我得到与第一行相同的数字free(由于内存使用现已自行修复,因此无法重现)。
但是,当我运行 时ps aux,所有进程的内存使用量仅为 295.9MB,这与 free 报告的 1.7GB 内存使用情况相差甚远。
为什么会有这样的差异?
编辑:
这是请求的额外信息,但我认为它不会有太大帮助,因为我现在已经显示使用了 ~360MB 使用free和 ~300MB 使用使用来自ps aux. 不知道为什么问题会自行解决。
free
total used free shared buffers cached
Mem: 2072616 668484 1404132 0 185868 139196
-/+ buffers/cache: 343420 1729196
Swap: 498004 1632 496372
Run Code Online (Sandbox Code Playgroud)
cat /proc/meminfo
MemTotal: …Run Code Online (Sandbox Code Playgroud) 我正在运行Debian GNU/Linux 5.0,并且遇到来自内核的间歇性内存不足错误。服务器停止响应除 ping 之外的所有请求,我必须重新启动服务器。
# uname -a
Linux xxx 2.6.18-164.9.1.el5xen #1 SMP Tue Dec 15 21:31:37 EST 2009 x86_64
GNU/Linux
Run Code Online (Sandbox Code Playgroud)
这似乎是 /var/log/messages 中的重要部分
Dec 28 20:16:25 slarti kernel: Call Trace:
Dec 28 20:16:25 slarti kernel: [<ffffffff802bedff>] out_of_memory+0x8b/0x203
Dec 28 20:16:25 slarti kernel: [<ffffffff8020f825>] __alloc_pages+0x245/0x2ce
Dec 28 20:16:25 slarti kernel: [<ffffffff8021377f>] __do_page_cache_readahead+0xc6/0x1ab
Dec 28 20:16:25 slarti kernel: [<ffffffff80214015>] filemap_nopage+0x14c/0x360
Dec 28 20:16:25 slarti kernel: [<ffffffff80208ebc>] __handle_mm_fault+0x443/0x1337
Dec 28 20:16:25 slarti kernel: [<ffffffff8026766a>] do_page_fault+0xf7b/0x12e0
Dec 28 20:16:25 slarti kernel: …Run Code Online (Sandbox Code Playgroud) 我在亚马逊 EC2 免费套餐上建立了一个站点,该站点配备 613MB 内存,无交换区。我发现服务器几乎一直使用 100% 的内存。我的网站正在运行 WordPress,并且打开了 wp 超级磁盘缓存。而且网站并不繁忙,每天大约300ip。谁能告诉我这是正常的还是出了问题?谢谢!
free -m
total used free shared buffers cached
Mem: 596 589 7 0 0 14
-/+ buffers/cache: 574 22
Swap: 0 0 0
ps aux | grep "apache"
apache 10120 0.2 5.1 287908 31732 ? S 10:41 0:19 /usr/sbin/httpd
apache 10122 0.2 4.9 288448 30504 ? S 10:41 0:22 /usr/sbin/httpd
apache 10123 0.2 4.8 288380 29676 ? S 10:41 0:20 /usr/sbin/httpd
apache 10124 0.2 5.1 287616 31708 ? S 10:41 …Run Code Online (Sandbox Code Playgroud) 在 Windows Server 2008 R2 文件服务器上,我们遇到了内存使用问题。我们使用RAMMap进行故障排除,发现 10GB 的 NTFS Metadata 被缓存在内存中并且永远不会被释放。
我的第一个想法是,由于在我们的 24TB RAID 上生成了数百万个小文件,因此主文件表变得越来越大。但是,在NTFSInfo.exe的帮助下,我们发现 MFT 的大小只有几 MB。
所以现在我想看看 NTFS 元数据中还有什么东西占用了这么多空间。如果我可以确定,那么也许我可以确定如何处理内存问题。NTFSInfo 不提供有关其他类型元数据的任何信息,到目前为止我还没有找到任何其他工具可以提供。
是否有任何建议可以向我显示有关 NTFS 元数据的特定信息的工具?
我正在尝试计算 LAMP 堆栈计算机中 AMP 使用的内存量。
top -bn1 | grep -E '(mysql|httpd|php)' | awk '{mem += $(NF-2)} END {print mem}'
但是使用上述命令生成的总和大于 100%,但我期望低于 100%,因为各个进程的内存使用情况已经以 % by 表示top。
请帮我理解是否top不能使用这种方式报告的内存来计算内存使用情况?
我目前正在DigitalOcean VPS上运行Gitlab实例 (v6.7.3) 和Ghost 驱动的个人博客,其大小为 512mb(最低端),由nginx 提供服务。直到最近我都无法同时运行,因为 Gitlab 无法启动,抱怨内存不足。我通过在 VPS (1GB) 上启用交换解决了这个问题(至少是暂时的)。主要问题似乎是 Gitlab 产生了 25 个(!)Sidekiq 实例,每个实例占用了我大约 30% 的内存,如. 我 在 SF 上发现了一个关于配置 Gitlab 以使用更少的 Sidekiq 工人的问题,但没有得到接受的答复。htop
我的问题是:以尽可能低的内存占用运行 Gitlab 的配置是什么?也许我无法减少那 25 个 Sidekiq 工人,但我可以做其他事情来减少其内存占用。
我的 VPS 仅供私人使用,我的 Gitlab 上有 5 或 6 个项目,预计一天最多提交 5 或 6 次,因此实际工作的最轻量级配置对我来说已经足够了。我的博客也很少点击。
我有 1M 静态重写规则并使用此映射配置。如何确定的最佳值map_hash_max_size和map_hash_bucket_size?我想优化内存消耗。关于这一点的文档非常少。
别人在 Nginx 论坛上问过,但没有回应。
我有一个旧的遗留服务器,交换有一个奇怪的问题。
我知道交换分区很小,要添加一个交换文件,但是,在重新启动后几个小时后,情况是这样的:
free -m
total used free shared buffers cached
Mem: 15922 15806 116 0 313 13345
-/+ buffers/cache: 2147 13775
Swap: 2047 2042 4
Run Code Online (Sandbox Code Playgroud)
Oracle 数据库已安装,但几乎未使用。我想了解为什么内存分配会这样。我的意思是 13345 缓存,意味着免费。为什么要填充交换?
以前的系统管理员将 swappiness 配置为:3。
未配置
大页面。
我看到一些类似的帖子,但没有解决方案来理解。这里的答案:linux redhat 5.4 - 内存仍然可用时交换谈到numa,所以我挖掘了一下(我是dba,不是系统管理员,如果我错过了什么,很抱歉)。
grep NUMA=y /boot/config-`uname -r`
CONFIG_NUMA=y
CONFIG_K8_NUMA=y
CONFIG_X86_64_ACPI_NUMA=y
CONFIG_ACPI_NUMA=y
dmesg | grep -i numa
NUMA: Using 63 for the hash …Run Code Online (Sandbox Code Playgroud) 我最近注意到 Amazon RDS(db.m4.large 实例)上的可用内存正在迅速减少。在过去的几周里,它已从近 3700 MB 迅速下降到 1000 MB。但应用程序没有出现任何问题。我的 CPU 利用率也一直很低 - 一直在 7% 左右。
我可以做些什么来清除记忆吗?担心如果按照这个速度发展,未来几天内存可能会耗尽。

当我htop在远程计算机上运行时,它的Mem条形显示内存已满,甚至交换共享 2.3G(我也可以看到系统运行速度非常慢)。但是htop的MEM%列显示大约 33% 的内存使用率。RES列的总和约为 3G,它确认了 33% 的内存使用率。我不知道这些结果之间有什么关系。我也找不到一些进程(除了PID 814)来释放内存。
你可以从我的htop 这里找到一个截图。
另一点是在我不清楚的列中PID 814有一个红色值(红色表示单位是 Gbyte)。也许对大页面的更改可能会影响此输出。在下面你可以看到输出16.0TVIRTcat /proc/meminfo | grep Huge
AnonHugePages: 532480 kB
ShmemHugePages: 0 kB
HugePages_Total: 5
HugePages_Free: 5
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 1048576 kB
Run Code Online (Sandbox Code Playgroud)
PS:对大页面的更改不是我做的。我不知道这是否会影响进程内存使用。(另一方面,如果我回滚大页面大小,进程使用的内存是否减少?大页面如何影响性能?它使用更多内存但减少内存页面错误?该内存计为进程内存使用量,例如其数据还是尊重操作系统并在其他地方计算?)
memory-usage ×10
linux ×4
memory ×2
nginx ×2
amazon-ec2 ×1
amazon-rds ×1
database ×1
file-server ×1
gitlab ×1
htop ×1
kernel ×1
lamp ×1
metadata ×1
ntfs ×1
performance ×1
redhat ×1
swap ×1
top ×1
ubuntu ×1