我发现有时我的 Linux 机器内存不足,它开始拆除随机进程来处理它。
我很好奇管理员如何避免这种情况?是增加内存量的唯一真正解决方案(单独增加交换会有所帮助吗?),还是有更好的方法来设置带有软件的盒子来避免这种情况?(即配额,或一些这样的?)。
我和很多人一样,有一个相对开箱即用的 Apache 安装,有很多默认的“LoadModule”行。
从一开始,我就安装了很多软件,说实话,我不知道什么软件在使用哪些模块。
我想减少我的 Apache 实例的内存占用,为此,我想删除正在使用的模块。我所知道的确定模块是否正在使用的唯一方法是将其从配置中删除并查看是否有任何损坏。这在很多方面都比我有时间描述的糟糕。
我想知道是否有人知道让 Apache 报告已使用哪些模块的方法,或者是否有另一种方法以编程方式确定模块是否可以安全取消配置。
我有一个相对较小的家用 Red Hat Linux 服务器(大约 8 GB RAM)。除了运行一些自制的应用程序来跟踪各种事情之外,我不使用它。在盒子上运行的唯一真实的东西是一个数据库和一个网络服务器。
我注意到,当使用 NMON 和 TOP 等工具检查系统计数器时,系统总可用内存相对较低(大约几百 MB),而数据库和 Web 服务器的活动内存仍然很低(仅总共消耗 3 GB)。即使包括所有其他正在运行的进程,总消耗的内存也小于 4 GB。
为什么 Red Hat Linux 报告的可用内存少于总内存减去运行进程的已用内存总和?
我正在运行带有 i2p 和 Tor 的 ARM 路由器 - Netgear R7000。当然,我已经向它添加了完整的 512 MB 的 SWAP 以防止 OOM,我知道它可能会减慢系统速度……但是我仍然可以从大量免费的 SWAP 开始获得 OOM 杀手,并杀死 Tor!更有趣的是,在杀死tor之后,系统似乎可以无限期地运行……但似乎仍然无法交换tor。我什至试图关闭过度使用,但根本没有帮助。
请参阅下面的 dmesg 日志
resetbutton invoked oom-killer: gfp_mask=0x2000d0, order=0, oom_score_adj=0
CPU: 0 PID: 1500 Comm: resetbutton Tainted: P 3.10.79 #381
Backtrace:
[<c0015cb8>] (dump_backtrace+0x0/0x118) from [<c0015ec0>] (show_stack+0x18/0x1c)
r6:c7a4cdc0 r5:00000000 r4:c6818000 r3:00000000
[<c0015ea8>] (show_stack+0x0/0x1c) from [<c012e5c0>] (dump_stack+0x24/0x28)
[<c012e59c>] (dump_stack+0x0/0x28) from [<c007c5cc>] (dump_header.isra.13+0x84/0x194)
[<c007c548>] (dump_header.isra.13+0x0/0x194) from [<c007c958>] (oom_kill_process+0x90/0x3e8)
[<c007c8c8>] (oom_kill_process+0x0/0x3e8) from [<c007d17c>] (out_of_memory+0x2c0/0x304)
[<c007cebc>] (out_of_memory+0x0/0x304) from [<c007fcbc>] (__alloc_pages_nodemask+0x5b0/0x694)
[<c007f70c>] (__alloc_pages_nodemask+0x0/0x694) from [<c00a2464>] (cache_alloc_refill+0x2c8/0x600) …Run Code Online (Sandbox Code Playgroud) 我有一个系统,它的内存使用量不断增加,直到达到了即使对于平常的事情也会发生交换的程度,从而变得非常无响应。罪魁祸首似乎是内核分配的内存,但我很难弄清楚内核中究竟发生了什么。
我如何知道哪些内核线程/模块/什么负责特定的内核内存块使用?
下面是系统内存使用情况随时间变化的图表:

该slab_unrecl值随时间增长,对应于SUnreclaim中的字段/proc/meminfo。
当我跑到slabtop该图的末尾并按缓存大小对其进行排序时,它向我展示了以下内容:
Active / Total Objects (% used) : 15451251 / 15530002 (99.5%)
Active / Total Slabs (% used) : 399651 / 399651 (100.0%)
Active / Total Caches (% used) : 85 / 113 (75.2%)
Active / Total Size (% used) : 2394126.21K / 2416458.60K (99.1%)
Minimum / Average / Maximum Object : 0.01K / 0.16K / 18.62K
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
3646503 …Run Code Online (Sandbox Code Playgroud) 在过去的几天里,我遇到了非常严重的内存不足问题。
虽然我解决了一个可能的原因,但我仍然收到了一个非常可疑的sendmail.
关于如何解决这个问题的任何建议?我认为这一定是某种恶意软件,但我没有解决此类攻击的经验。
1 [||||||||||||||||||||||||| 27.0%] Tasks: 101, 50 thr; 1 running
2 [||||||||||||||||||||||||||||||||||||||||| 45.7%] Load average: 12.96 12.55 11.95
Mem[|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||1183/1995MB] Uptime: 09:53:28
Swp[|||| 93/2047MB]
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
19704 root 20 0 120M 25328 2896 S 2.0 1.2 0:46.16 sendmail: MTA: ./s6HH4rLv009027 gmail.co.: user open
3298 root 20 0 99M 5612 1684 S 2.0 0.3 2:46.31 sendmail: MTA: s6OABpf4003298 …Run Code Online (Sandbox Code Playgroud) 因此,我从我们的监控系统中收到一条警报,指出虚拟机上的可用内存不足 15%。我登录进行调查,结果发现有问题的 VM 是配置了动态内存的 Hyper-V VM,运行在 Windows Server 2012(不是 R2)上。主机也是 Windows Server 2012(不是 R2)。
查看 Hyper-V 管理器,我可以在“内存”选项卡下看到以下内容:
启动内存:2048 MB
动态内存:启用
最小内存:512 MB
最大内存:8192 MB
分配内存:2826 MB [有很多扩展机会]
内存需求:2769 MB
内存状态:低
查看访客内部,我使用任务管理器看到以下内容:
使用中:3.2 GB
可用:483 MB 已
提交:3.6/6.2 GB
缓存:410 MB
分页池:139 MB
非分页池:57.9 MB
主机上有足够的可用内存,甚至可笑(42.8 GB 可用...)
VM 上的内存缓冲区设置为 20%。
这是预期的行为吗?从我们的监控图中可以看出,这种情况已经持续了几个小时......
请注意,内存图显示可用内存的兆字节。
我意识到这是一个疯狂的问题,但是有没有人尝试过为主机提供自己的专用盒子的内存?我在 ServerBeach 上的一个不错的装备上运行,但像任何主机一样,他们持有 RAM 人质。对我来说,主机现在期望人们为每 GB 支付 25 美元/月 + 有点荒谬。你几乎可以以这个价格购买 ram。
我想知道如果我打电话问我是否可以给他们寄 24-48 GB 的内存(一半放在我的盒子里,另一半让他们保留以补偿如果他们不得不更换)它)。我会向他们发送与他们使用的完全相同的内存来避免兼容性问题,而且我显然会为他们的标准安装率付费,期望甚至愿意为此支付溢价。
我会被嘲笑吗?呵呵
我有一台戴尔 Power Edge 1850,运行 Windows 2k3 x86。它有 4 GB 的 RAM(8 个 512MB 的总内存条,我尝试重新安装,并完全替换为新内存)但是这就是我每次查看任务管理器时看到的内容。
这里发生了什么?它似乎以接近 1 GB 的 RAM 运行,但只有 261 MB 的物理内存?左边的指标是否包括物理内存+可用PF?如果可能的话,我能做些什么来让 Windows 识别剩余的内存?
先感谢您。
编辑:应该说总共有 6 根 512MB。总共有 3072MB。
low-memory ×9
memory ×4
linux ×2
apache-2.2 ×1
hosting ×1
httpd ×1
hyper-v ×1
linux-kernel ×1
memory-usage ×1
oom ×1
redhat ×1
sendmail ×1
spam ×1
sysctl ×1
ubuntu-12.04 ×1
wordpress ×1