标签: memory-usage

令人困惑的内存泄漏。在这个系统上使用 ~10GB 的内存是什么?

在运行了大约 18 个小时后,这个系统使用了大约 10GB 的内存,导致我们在运行我们的日常任务时触发了 OOM-killer:

# free -h
             total       used       free     shared    buffers     cached
Mem:           14G       9.4G       5.3G       400K        27M        59M
-/+ buffers/cache:       9.3G       5.4G
Swap:           0B         0B         0B

# cat /proc/meminfo
MemTotal:       15400928 kB
MemFree:         5567028 kB
Buffers:           28464 kB
Cached:            60816 kB
SwapCached:            0 kB
Active:           321464 kB
Inactive:          59156 kB
Active(anon):     291464 kB
Inactive(anon):      316 kB
Active(file):      30000 kB
Inactive(file):    58840 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                40 …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu memory-leak memory-usage oom

10
推荐指数
2
解决办法
4159
查看次数

Apache“httpd”进程,利用我所有的服务器内存

我的小型 ec2 实例有 1.7 GB 内存,运行基于 CentOS 的 Amazon AMI,在 Apache 使用过多内存时存在问题。如果你看一下截图,内存使用率将在 90-100%,直到我重新启动 httpd 服务,它会重新开始,增加到 90+%。

在此处输入图片说明

我真的很感激有关如何定位问题的一些帮助。这可能是“正常”的 apache 行为,以利用所有可用内存吗?或者是否有我必须追捕的可能泄漏。目前,我对可能发生的事情感到有些困惑。

我们正在使用 Apache MPM prefork,没有 sql 或任何类似的东西——只有 apache。网站在这里

memory httpd lamp memory-usage apache-2.2

9
推荐指数
1
解决办法
2万
查看次数

如何处理Redis引发的内存碎片?

我有一个 Redis 3.0.5 实例,随着时间的推移,它往往会显示 mem_fragmentation_ratio 的增长。

使用该实例的应用程序不断地创建和删除密钥。

一个月后,我的结果是 mem_fragmentation_ratio > 1.30。这会影响 Redis 在该服务器上的内存占用:

~$ redis-cli info memory
# Memory
used_memory:7711297480
used_memory_human:7.18G
used_memory_rss:10695098368
used_memory_peak:11301744128
used_memory_peak_human:10.53G
used_memory_lua:95232
mem_fragmentation_ratio:1.39
mem_allocator:jemalloc-3.6.0
Run Code Online (Sandbox Code Playgroud)

如果我重新启动 Redis 服务并从 AOF 重新加载,mem_fragmentation_ratio 会回到可接受的水平 (1.06):

~$ redis-cli info memory
# Memory
used_memory:7493466968
used_memory_human:6.98G
used_memory_rss:7924920320
used_memory_peak:8279112992
used_memory_peak_human:7.71G
used_memory_lua:91136
mem_fragmentation_ratio:1.06
mem_allocator:jemalloc-3.6.0
Run Code Online (Sandbox Code Playgroud)

回收 Redis 正在影响我们的应用程序(即使我们在从服务器重启后使用 Sentinel 故障转移来执行此操作)。

是否有另一种方法可以减少 mem_fragmentation_ratio,例如我可以安排非高峰期的“碎片整理”过程?

fragmentation memory-usage redis

9
推荐指数
1
解决办法
8452
查看次数

Apache 重载 VIRT 与 RES 内存

我有一台 Debian 5 服务器,它的流量很大。现在服务器有 4 GB 的 RAM,没有交换内存。我在上面看到 Apache 进程每个消耗大约 180 MB 的虚拟内存 (VIRT) 和 16 MB 的实际 RAM (RES)。那么我可以同时运行多少个 Apache 线程呢?大约 4 GB / 180 MB = 22 或 4 GB / 16 MB = 256?

linux memory debian memory-usage apache-2.2

8
推荐指数
2
解决办法
2万
查看次数

“Kbytes RSS Dirty”对 pmap 意味着什么?

的输出pmap

Address           Kbytes     RSS   Dirty Mode   Mapping
00000000006b4000      60      16      16 rw---    [ anon ]
Run Code Online (Sandbox Code Playgroud)

它在说什么?

linux memory-usage

8
推荐指数
2
解决办法
2万
查看次数

PHP 在命令行显示“Out of Memory”,没有文件名、行号或内存值

我最初将其发布在/sf/ask/676563261/但被建议在此处发布。

当脚本内存不足时,这不是正常的致命错误,因为它没有给出文件名、行号或使用的内存量。每当我尝试在命令行上运行 php 时,它只是说“内存不足”,无论是当您传递一个脚本还是只是单独运行 php 时。即使尝试运行一个不存在的脚本也会给出相同的消息。

换句话说,我得到了这个:

dan@server [~]# php
Out of memory
dan@server [~]# php test.php
Out of memory
dan@server [~]# php doesntexist.php
Out of memory
dan@server [~]# php -v
Out of memory
Run Code Online (Sandbox Code Playgroud)

然而,通过 Apache 的 PHP 工作得非常好。我只是在 CLI 上收到此错误。

有问题的机器正在运行 CentOS 版本 5.7(最终版),它是 64 位和 PHP 5.3.10。它是一个专用服务器。

我尝试按照建议运行 ulimit -a as dan,这是输出:

core file size          (blocks, -c) 200000
data seg size           (kbytes, -d) 200000
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) …
Run Code Online (Sandbox Code Playgroud)

php command-line-interface centos memory-usage

8
推荐指数
1
解决办法
1848
查看次数

内存使用率非常高,但没有被任何进程声明?

在我们的一台 Debian 服务器上对 LVM 进行压力测试时,我遇到了这个问题,即内存会被大量填满,导致服务器内存不足,但没有进程会占用内存。有关htop 中使用的颜色的说明,请参见http://i.imgur.com/cLn5ZHS.png,并参见https://serverfault.com/a/449102/125894

为什么会这样?
有什么方法可以查看正在使用内存的进程吗?
htop 被配置为不隐藏任何进程,那么 htop 缺少什么?

在这种特殊情况下,我可以肯定地说它是由 lvmcreate、lvmremove 或 dmsetup 直接或间接引起的,因为我正在对其进行压力测试。请注意,这个问题不是关于解决 LVM 问题,而是关于为什么任何进程都没有声明内存。停止所有 LVM 命令确实会将内存降低到 <600MB。

的输出free -m

             total       used       free     shared    buffers     cached
Mem:         32153      31958        194          0         52       3830
-/+ buffers/cache:      28075       4077
Swap:          975          0        975
Run Code Online (Sandbox Code Playgroud)


由于它的长度,顶部的输出,在 pastebin 上:http : //pastebin.com/WchrpF7W

linux monitoring memory lvm memory-usage

7
推荐指数
1
解决办法
8662
查看次数

cgroup 中报告的内存使用情况与 free 命令不同

为什么 free 命令报告的内存使用量与 cgroup 的内存使用量有很大不同?

$ free -b 
              total        used        free      shared  buff/cache   available
Mem:     2096914432   520863744  1112170496    35389440   463880192  1356828672
Swap:    2145382400           0  2145382400

$ cat /sys/fs/cgroup/memory/memory.usage_in_bytes 
857239552
Run Code Online (Sandbox Code Playgroud)

cgroups 的文档说 memory.usage_in_bytes 是一个“模糊值”。我猜这只是意味着它报告的估计值接近实际值。即使这是一个估计,我认为也不应该相差这么远。

我在 VirutalBox 虚拟机中运行 Linux Mint 18.2。

linux memory-usage cgroup

7
推荐指数
1
解决办法
1万
查看次数

为什么MemAvailable比MemFree+Buffers+Cached少很多?

我正在运行一个没有交换的 Linux 工作站,并且我已经安装了earlyoom守护进程,以便在 RAM 不足时自动终止一些进程。它earlyoom通过监视内核MemAvailable值来工作,如果可用内存变得足够低,它会杀死不太重要的进程。

这已经工作了很长一段时间,但突然间我遇到了MemAvailable与系统其他部分相比突然非常低的情况。例如:

$ grep -E '^(MemTotal|MemFree|MemAvailable|Buffers|Cached):' /proc/meminfo 
MemTotal:       32362500 kB
MemFree:         5983300 kB
MemAvailable:    2141000 kB
Buffers:          665208 kB
Cached:          4228632 kB
Run Code Online (Sandbox Code Playgroud)

请注意 MemAvailable 远低于MemFree+ Buffers+ Cached

我可以运行任何工具来进一步调查为什么会发生这种情况吗?我觉得系统性能比正常情况要差一些,我不得不停止该服务,因为除非稳定(即它正确地描述了用户模式进程的可用内存),earlyoom否则它的逻辑将无法工作。MemAvailable

根据https://superuser.com/a/980821/100154 MemAvailable 是对可用于启动新应用程序(无需交换)的内存量的估计。由于我没有交换,这是什么意思?这是否意味着在触发 OOM Killer 之前新进程可以获取的内存量(因为这在逻辑上会遇到“交换已满”的情况)?

我曾假设MemAvailable>=MemFree总是正确的。不在这里。

附加信息:

在互联网上搜索表明,原因可能是打开的文件不受文件系统支持,因此无法从内存中释放。该命令sudo lsof | wc -l输出653100所以我绝对无法手动浏览该列表。

顶部sudo slabtop

 Active / Total Objects (% used) …
Run Code Online (Sandbox Code Playgroud)

linux debugging kernel memory-usage

7
推荐指数
1
解决办法
9607
查看次数

Ubuntu 服务器上的交换空间使用率较高

这是该命令在Nginx反向代理后面free运行Spring Boot应用程序的服务器上报告的内容:

$ free -h

               total        used        free      shared  buff/cache   available
Mem:           1.9Gi       893Mi       164Mi        29Mi       919Mi       883Mi
Swap:          511Mi       481Mi        30Mi
Run Code Online (Sandbox Code Playgroud)

我应该如何解释高交换使用率?这是否表明我应该将服务器升级到更高的内存容量(例如 4 GiB)?

vmstat的输出

$ vmstat 1 5

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0 493428 150620  95476 879668    0    1     8    28    1    0  3  1 95  0  1
 0  0 493428 …
Run Code Online (Sandbox Code Playgroud)

ubuntu memory-usage

7
推荐指数
1
解决办法
3462
查看次数