这是穆宁的图表。
内存使用:http : //koryagin.com/w/q/memory-day.png
换入/换出:http : //koryagin.com/w/q/swap-day.png
当 RAM 大小远大于程序使用的内存时,为什么 Linux 决定增加缓存并使用交换?
还有一个关于 Solaris 10 内存的问题。
一顶让我发现,我有672 MB可用内存:
130 processes: 126 sleeping, 2 zombie, 2 on cpu
CPU states: 95.1% idle, 3.9% user, 1.0% kernel, 0.0% iowait, 0.0% swap
Memory: 16G phys mem, 672M free mem, 2048M total swap, 2023M free swap
Run Code Online (Sandbox Code Playgroud)
一个vmstat显示我相同:
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr rm s0 s1 s2 in sy cs us sy id
0 0 0 564744 687896 3 13 …Run Code Online (Sandbox Code Playgroud) 如果我查看 vSphere 集群或资源池并看到一定程度的内存膨胀或交换,我如何确定哪些虚拟机受到影响?一旦我找到它们,我就知道如何处理它们:)
在下面的示例中,资源池中有 65 个虚拟机。只有不到 32 GB 的膨胀 RAM。如何确定哪些 VM 的一部分 RAM 膨胀或交换?
Linux 在作为 VM 来宾运行时支持热添加内存,例如在 VMware中。(有时您需要手动通知来宾操作系统。)
是否有一种安全的方法来执行反向操作——减少分配给虚拟机的内存量,如果是这样,您是否需要在执行此类操作之前手动通知 Linux 客户机?(如果是这样,该过程是特定于 VMware 工具的,还是适用于任何类型的虚拟化机制?)
我似乎有人声称 Exchange ( link ) 和 Elasticsearch ( link ) 会受到“太多”内存的影响。我还在一本旧书中读到一个模糊的提示,IIS 可能也是如此:
[T]他[RAM]越多越好,至少在一定程度上是这样。如果内存过多,IIS 文件缓存将无法完全使用它。因此,对于标准 Web 服务器,最好不要超过 2GB 到 3GB 的 RAM。
任何人都可以确认或反驳 IIS 服务器可能有太多 RAM 的说法吗? 如果说法属实,是否是微调配置的问题?
我问的原因是因为我在我的生产环境与测试环境中看到了一个可能的性能问题,在这些环境中,即使在重负载下,16GB RAM 的测试环境的性能似乎也比 64GB 的生产环境更好。我在 Windows Server 2012 R2 64 位上运行 IIS 8。
(我能找到的唯一一个 ServerFault 问题没有专门针对 IIS。)
我有一个 Java 应用程序,其可伸缩性主要受 RAM 限制,我希望在数据中心的一台或多台服务器上运行该应用程序。我应该在哪里寻找可以容纳 100GB - 512GB 或更多 RAM 的服务器硬件?我不是这些问题的专家,所以我真的不知道从哪里开始。
这是否进入了超级计算机领域(6 位数或更多),或者我可以以低 5 位数的价格获得这样的服务器?
基于以下一些问题的一些说明:
我有一个在 Windows 2008 R2 上运行的自定义服务器应用程序。它是用 .Net 编写的本地 Windows 服务,支持许多自定义终端。我有一台测试机器,它的规格与实时服务器相似,我有一组客户端模拟器,我可以用它来产生一个与真实系统合理近似的负载。我需要能够支持其中的 12,000 个,目前服务器内存不足(分页正在通过屋顶)。
我的计划是只启动 100 个模拟器,测量内存使用情况,然后再启动 100 个测量内存并重复直到分页开始上升(实际上我将采用三个以上的数据点。)这应该给我一个数字100 个模拟器所需的额外内存量,并使我能够预测需要多少内存。我只需要一个 +/-30Gb 的粗略想法就可以避免购买服务器所需的全部 2Tb(价值 150,000 美元)。我的问题是这是否是一种合理的使用方法,如果是,您将监控哪些性能计数器以提供实际使用的内存量?
我在这里专门讨论内存,因为工作集、私有字节、已提交、共享、虚拟和所有其他内存术语之间的区别让我感到困惑。我想我可以自己监控 CPU、IO 和网络。我注意到的另一件事是 .Net Cache 根据可用内容调整其内存使用量,这使得很难发现趋势。
我从我们的供应商那里听说可以将低电压 RAM 与常规电压 RAM 一起放置。他们说会发生的一切是 LV RAM 将上升以匹配 1.5v ram(换句话说,ram 不会在 LV 下运行)。
任何人都可以从经验中确认是否是这种情况?根据我的经验,在 RAM 中混合任何因素都不是最好的主意,但对围绕这个特定问题的经验感到好奇。
Linux 机器上有许多(数百?)不同的内存使用量度,但是用于帮助确定服务器是否需要更多内存的良好启发式/指标是什么?
一些想法:
在搜索了这个并且只找到了不能正确解释“缓存”数字的人的帖子后,我决定问这个问题。
我手头有一些服务器,它们的行为很奇怪。也就是说,他们的 RAM 使用率非常高,原因不明。似乎一个不可见的进程有很多“使用过的”RAM(我的意思是“使用过的”)。
这是一些信息:
还有一些shell输出:
root@good-server:# free -m
total used free shared buffers cached
Mem: 15953 14780 1173 0 737 8982
-/+ buffers/cache: 5059 10894
Swap: 31731 0 31731
root@good-server:# python ps_mem.py
[... all processes neatly listed ...]
---------------------------------
4.7 GiB
=================================
root@bad-server:# free -m
total used free shared buffers cached
Mem: 15953 15830 123 0 124 1335
-/+ buffers/cache: 14370 1583
Swap: 31731 15 31716
root@bad-server:# …Run Code Online (Sandbox Code Playgroud) memory ×10
linux ×4
hardware ×2
hotswap ×1
iis ×1
memory-usage ×1
performance ×1
solaris ×1
solaris-10 ×1
vmware-esxi ×1
windows ×1