我有运行liquidsoap+icecast 包和简单网站(httpd+mysqld)的服务器。没什么特别的。每天约有 2000 多名访客,平均约有 50 人同时在线。
服务器有 8GB 内存。随着时间的流逝,可用内存量不断减少,尽管服务器上没有启动任何新内容并且没有新用户。在某些时候它开始交换,服务器上的负载上升并且变得无响应。通常我所做的只是重新启动服务器......
可以做些什么来检测究竟是什么泄漏了内存?我使用 top 来监控资源的使用情况,但据我所知,它没有任何帮助:

有没有办法找出使用那么多内存的东西?或者什么开始大量交换到磁盘?有什么方法可以在不重新启动服务器的情况下释放内存?
注意:我已阅读Windows 服务器需要重新启动的频率?但是这个问题特别与我们的远程桌面服务器有关。
我们有一台 Windows Server 2008R2 服务器 - 一台 VMware ESX VM - 获得远程桌面服务许可,25 个用户也执行 RRAS (SSTP)。在平均工作日,在工作时间内,有 8 到 12 个登录的活跃用户以及 4-6 个“断开连接”的用户。它具有 12 GHz CPU 硬预留和 16 GB RAM,也完全预留。需要时,CPU 预留可扩展至最大 24 GHz。
我们的许多用户完全依赖服务器来工作。他们也对它的性能抱怨不已,但许多人不愿意改变工作习惯或软件来提高其性能。具体来说:
我不能夸大他们拒绝注销的重要性。断开连接的用户在断开连接时继续占用 RAM,这意味着在任何给定时间,我们有多达 16 个正在运行的某些程序实例。
我还根据经验注意到,远程桌面服务器运行的时间越长,泄漏/僵尸事件的累积就越多。重新启动后,即使在许多用户登录后比较性能时,服务器也是新鲜的并且速度更快。我还读到定期重新启动可能会有所帮助。
所以我建议定期重启虚拟机——我想每周重启一次,比如周六晚上——因为我觉得这些重启可以解决很多问题。
我想知道,如果您是 Windows 管理员,
即使在用户断开连接/重新连接之后,垃圾/僵尸/泄漏也会随着会话时间的推移而累积这一事实是否正确?
多久你重新启动一个类似的充分利用的Windows Server远程桌面服务?
remote-desktop-services windows-server-2008-r2 cpu-usage memory-usage lync
注意:在你跳得太快之前,是的,我阅读了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) 我们的 ElastiCache Redis 实例交换一直存在问题。亚马逊似乎有一些粗略的内部监控,它会注意到交换使用高峰,并简单地重新启动 ElastiCache 实例(从而丢失我们所有的缓存项目)。这是过去 14 天我们 ElastiCache 实例上 BytesUsedForCache(蓝线)和 SwapUsage(橙线)的图表:

您可以看到不断增长的交换使用模式似乎触发了我们的 ElastiCache 实例的重启,其中我们丢失了所有缓存项目(BytesUsedForCache 降至 0)。
我们 ElastiCache 仪表板的“缓存事件”选项卡具有相应的条目:
来源 ID | 类型 | 日期 | 事件
缓存实例 ID | 缓存集群| 2015 年 9 月 22 日星期二 07:34:47 GMT-400 | 缓存节点 0001 重新启动
缓存实例 ID | 缓存集群| 2015 年 9 月 22 日星期二 07:34:42 GMT-400 | 在节点 0001 上重新启动缓存引擎时出错
缓存实例 ID | 缓存集群| 2015 年 9 月 20 日星期日 11:13:05 GMT-400 | 缓存节点 0001 重新启动
缓存实例 ID | 缓存集群| …
我在世界各地部署了相当多的服务器。他们运行 Windows 2003 x64 和 SQL Server 2005 x64,6 GB RAM。这些盒子没有最好的(甚至是可接受的)配置,因为几年前订购它们的人并不真正知道他在做什么。
这些盒子总是内存不足,最终使用分页文件,一切都变慢了。通常提交费用是 5.8GB,然后当有人需要做一些密集的事情(例如运行报告)时,这个数字就会飙升。
我一直试图获得订购更多内存的权力,但我遭到了强烈反对(例如,使软件性能更高,所有这些服务器的成本太高,或者证明盒子没有足够的内存等。 ...)。
我可以向非技术人员展示一个盒子需要多少 RAM 的指南(或公式),以便我们最终可以订购更多内存?
我有一台 Window 8.1 主机试图通过 Hyper-V 启动虚拟机。VM 配置为使用 10GB 的 RAM,我有 16GB,它应该启动但没有启动。
相反,我收到了消息
“{VM NAME}”无法初始化。
系统内存不足,无法启动虚拟机 {VM NAME}
主机有 16GB RAM,其中只有 4.8GB 正在使用。这至少有 11GB 可供 Hyper-V 使用。除了它不能。
更准确地说,任务管理器报告以下内存情况:-
我知道我目前有 10.8GB 的“待机”内存。但是如果 Hyper-V 要求它应该发布它对吗?
如果我重新启动然后立即要求 Hyper-V 启动机器,它可以工作,但我必须快速,因为备用内存很快就会被填满。
这是正常的吗?有没有办法清空备用内存并将其取回,这样我就可以启动我的虚拟机而不必重新启动主机?
我经常使用 ImageMagickconvert进行 *->PNG 转换,但是当 PDF 超过 50 页时 -convert占用超过3 Gib (!!!) 的内存。我想它首先加载所有内容。
这是不可接受的。它应该一页一页地阅读PDF,为什么要一次全部阅读!
也许有办法以某种方式调整它?或者有什么好的替代品?
我们需要在具有 32Gb RAM 的服务器上运行一些测试。
我们可以访问的所有服务器都有 64GB,我们无法对其进行物理更改。
是否有某种方法告诉 RHEL 仅使用固定数量的 RAM,小于安装的 RAM?
Apache 使用了太多我的服务器内存,导致它崩溃。我在服务器中有 4GB 的 RAM。
我正在尝试微调 Apache 设置以提高其性能,但我对此很陌生。
我试图遵循这篇文章的建议,但我不知道如何计算事情,而且我似乎让事情变得更糟。
我的顶部是这样的:
11697 apache 15 0 322m 37m 4048 S 0.0 0.9 0:00.52 httpd
13602 apache 15 0 323m 37m 3944 S 0.0 0.9 0:00.50 httpd
11786 apache 15 0 322m 36m 4052 S 0.0 0.9 0:00.50 httpd
12525 apache 15 0 322m 36m 4040 S 0.0 0.9 0:00.63 httpd
11806 apache 15 0 322m 36m 3952 S 0.0 0.9 0:00.42 httpd
11731 apache 15 0 322m 36m 4036 S …Run Code Online (Sandbox Code Playgroud) 还有一个关于 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) memory-usage ×10
memory ×3
linux ×2
64-bit ×1
apache-2.2 ×1
convert ×1
cpu-usage ×1
hyper-v ×1
imagemagick ×1
lync ×1
memory-leak ×1
redis ×1
resources ×1
rhel8 ×1
solaris ×1
solaris-10 ×1
swap ×1
top ×1