我在 Debian 上使用 SpamAssassin(禁用 Pyzor、AWL 和 Bayes 并启用 sa-compile 的默认配置),并且每个 spamd 子进程在 32位服务器,在 64 位服务器上大约是这个(逻辑上足够)的两倍。通常有两个子进程,但在繁忙时间可能有五个(最多)正在运行。
ISTM 认为 200 到 600MB 是这项任务的大量内存。我想继续使用 SA 作为过滤结构的一部分,但越来越难以证明如此多的内存是合理的。
有没有办法减少每个子进程使用的内存量?(或者,让单个子进程如此之快,以至于我可以将最大子进程设置为 2 之类的东西?)。我愿意考虑任何选项,包括会或可能会导致准确性降低的选项。
我已经阅读了 SA wiki 上的“内存不足问题”页面;没有任何用处。不使用 SA 扫描大于 5 MB 的邮件。
top和ps 之类的工具可以为我提供当前分配给进程的内存量,但我感兴趣的是测量自进程创建以来或在给定时间间隔内分配给进程的最大内存量。有关如何查找的任何建议?
注意:在你跳得太快之前,是的,我阅读了linuxatemyram.com!
我有一台带有 64GB RAM 的服务器。
free -m 说我的 RAM 已满,这不是因为磁盘缓存:
total used free shared buffers cached
Mem: 64458 64117 340 201 67 331
-/+ buffers/cache: 63719 739
Swap: 1532 383 1149
Run Code Online (Sandbox Code Playgroud)
但是,top按内存使用量排序不会加起来为 64GB:
KiB Mem: 66005116 total, 65652464 used, 352652 free, 67512 buffers
KiB Swap: 1569780 total, 392656 used, 1177124 free. 337464 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6258 mysql 20 0 38.665g 0.033t 4924 S 1.3 54.3 …Run Code Online (Sandbox Code Playgroud) 我们有一个强大的 Windows 2008 x64 服务器(4 x 4 核 CPU,32GB RAM)运行 SQL Server 2005 64 位。我们有一个很小(6GB)但非常重要的数据库,它在页面缓存在内存中之前访问有点慢(使用是非常随机的 I/O,因此给定页面在内存中的几率非常低,最终用户抱怨最初的缓慢)。磁盘足够快(本地 15K SAS),但我猜该应用程序编写得有些笨拙(它是一个 COTS 解决方案)所以我想知道是否有办法在 SQL Server 2005(不支持 2008)的内存中“强制”数据库由供应商提供,所以我们不应该升级到那个)来帮助避免最初的缓存填充蓝调?
我目前的方法是,我从脚本中的每个表中运行 SELECT * 以获取内存中的数据页,但此方法未缓存某些对象(索引、全文搜索等)(并修改脚本以查询索引和将适当的 WHERE 子句写入缓存是一种复杂的海洋)。
是否有脚本将内存使用情况显示为图形,例如饼图,每个进程都是一个单独的切片?
我不是在寻找像Munin这样的东西来绘制随时间变化的内存使用情况,而是在单个时间点显示每个进程的内存使用情况。
为了使我的请求更加模糊,它适用于无头服务器(因此没有 X 应用程序)。最简单的方法是编写一个 PNG 文件,或者可能是一个 HTML 文件(它可以使用 Javascript 来允许过滤进程,在图形类型之间进行更改等等)
我照顾着一个只有 512 MB 内存的旧 Debian linux 机器(运行 etch),但连接了很多外部存储。一个 ext3 文件系统的大小为 2.7 TB,fsck 无法检查它,因为它内存不足,出现这样的错误:
分配目录块数组时出错:内存分配失败 e2fsck:中止
我已经添加了一个 4 GB 的交换分区,但它仍然没有完成,但这是一个 32 位内核,所以我不认为添加更多会有所帮助。
除了启动到 64 位内核之外,还有其他方法可以让 fsck 完成它的检查吗?
(我也在technet上发布了这个,但我的想法已经用完了)
我已从 Windows Server 2008 R2 Standard 升级到 Enterprise,以便使用更多 RAM。该服务器以前有 32GB 的 RAM。
使用 DISM 从 Standard 升级到 Enterprise 似乎很顺利,所以我关闭电源并安装了 RAM。这是戴尔 Poweredge T710,我把它从 32GB 增加到 72GB。
BIOS 识别出 RAM,尽管我需要从“高级 ECC”更改为“优化器”模式才能使用它。
重新启动后,Windows 可以看到 RAM,但在系统面板中将显示:
安装内存 (RAM):72.0 GB(4.00 GB 可用)
在资源监视器中,剩余的 RAM 显示为为硬件保留。我尝试了各种 RAM 配置,包括将其恢复为与升级前相同的芯片和相同的配置,但始终只有 4.00 GB 显示为可用。按照这些论坛上的一些线程,我进入了 msconfig 并“手动”设置了最大内存,但这并不能解决问题。BIOS 似乎没有任何看起来像内存重新映射的东西,这是另一个提出的建议。
如何使此 RAM 可用于 Windows?它在升级之前可用,因为我可以使用服务器启动时必须使用的完整 32GB RAM。
屏幕截图(这是在恢复到原始 RAM 配置之后)

不知道有没有关系,我的远程桌面配置也不见了:

(这个对话框的下半部分应该允许我配置远程桌面,它在升级前工作,但现在不是了)。
更新
我找到了一个临时答案 - 但它给了我另一个问题。这是我刚刚在 technet 上发布的内容,我也在那里问了这个问题:
好的,我暂时解决了这个问题——不是 BIOS——但现在我不知道如何永久修复它。
线索来自这个线程,C Clarke 似乎和我做了同样的事情:
“我们使用 DSIM 实用程序和 MS 网站上提供的通用 …
我的 Ubuntu 消耗的内存比任务管理器显示的要多:
sudo ps -e --format rss | awk 'BEGIN{c=0} {c+=$1} END{print c/1024}'
2750.29
free -m
total used free shared buffers cached
Mem: 3860 2765 1094 0 3 300
-/+ buffers/cache: 2461 1398
Swap: 2729 2374 354
Run Code Online (Sandbox Code Playgroud)
真奇怪。有人可以解释这种差异吗?
但更重要的是:我想知道一个进程真正使用了多少内存。我不想知道虚拟内存大小,而是想知道常驻内存加上进程的交换。
我还尝试输出“ps”的格式参数“sz”,但其总和很高(16000 MB)(参数“size”给出了 36700 MB)。还有其他选择吗?
我真的很想用它来确定哪些程序/进程正在消耗大量内存(和交换),杀死它们,因为内存很有价值:-) 这真的没有意义,所以我在这里问。
/proc/meminfo 的输出:
MemTotal: 3952812 kB
MemFree: 1119192 kB
Buffers: 2676 kB
Cached: 290068 kB
SwapCached: 160980 kB
Active: 1805396 kB
Inactive: 731680 kB
Active(anon): 1745820 kB
Inactive(anon): 689184 kB
Active(file): 59576 kB
Inactive(file): 42496 …Run Code Online (Sandbox Code Playgroud) 我有一个用作 SAN 存储的 linux 盒子。它配备了 14 个 SATA HDD,它运行的唯一软件是 iSCSI 目标和 zabbix 代理。这是物理盒子,不是虚拟机。
安装的 RAM 大小为 128 GB,swap 被安排为 4 GB,当 RAM 很大时没有人关心它的大小,但是随着机器运行(正常运行时间为 694 天)swap 越来越多地使用,现在它用于~80%。
htop 不会显示任何不好的东西,看起来操作系统使用 RAM 作为缓存等swappiness设置为 10,然后设置为 1,没有任何帮助。当然我可以完全禁用交换,但看起来这将是一个糟糕的举动。
所以我的问题很简单,如何将盒子设置为使用 RAM 而不是使用交换,以及为什么它在 RAM 足够的情况下完全使用交换?
这是 SAN,所以它服务的是块而不是文件,所以缓存可以基于块来完成,如果 RAM 有限,可以轻松减少,无论如何它不会影响 iSCSI 的逻辑。
Zabbix 说现在我有可用的 RAM = 123.22 GB(嘿,几乎都是 128 GB!),使用的交换是 3.24 GB 的 4 GB。
我们的其中一台 SQL Server 已经稳定运行了一段时间(几年),但最近出现了内存不足错误。从应用程序事件日志中,我们看到:
事件 ID:701
说明:系统内存不足,无法运行此查询。
我们管理此服务器的团队主要由兼任系统管理员职责的开发人员组成。然而,我们的主要专长是开发。话虽如此,我们对如何解决这个问题一无所知。我们一直在搜索论坛之类的东西,但没有找到任何匹配的内容
所以,这里有一些更多的细节来帮助排除故障:
编辑:
我们在 SP3 上。我们发现的大多数帖子都是 SP1 之前的,这不适用于我们。
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
Run Code Online (Sandbox Code Playgroud)
返回
9.00.4035.00 SP3 标准版
memory ×10
linux ×6
sql-server ×2
swap ×2
64-bit ×1
cache ×1
database ×1
debian ×1
ext3 ×1
fsck ×1
iscsi ×1
licensing ×1
memory-usage ×1
optimization ×1
spam ×1
spamassassin ×1
ubuntu ×1