标签: memory-leak

我的 Apache2 设置是否泄漏内存?

最近,我注意到我的 apache 在我的 Linode 服务器上使用了大量的内存(比以前多 80MB),重新启动 apache2 似乎可以解决这个问题。

我在 apache 上运行 SVN,在服务器上运行 mysql 和 tomcat,但似乎都不是问题。如何在 apache 丢失内存的情况下进行调试?除了 SVN,它实际上只是托管一个 wordpress 博客,所以我看不出哪里可能发生泄漏。我使用了 ubuntu 8.04 存储库中的默认安装。

有什么帮助吗?

linode memory-leak apache-2.2

5
推荐指数
1
解决办法
1880
查看次数

Windows Server x64 中的进程管理内存泄漏?

全新安装并启动 OS Windows x64 后,我启动了 cmd.exe(任何其他 exe)并关闭了它。然后我启动 rammap.exe ( http://technet.microsoft.com/en-us/sysinternals/ff700229.aspx )。在名为“进程”的第二页上,我按进程名称对列表进行了排序,看到 cmd.exe 仍然消耗内存(4K 私有和 16K 页表 = 20K)。我第二次启动它,新项目出现在这个列表中(每个进程启动+终止一个)。因此,每个进程终止都会占用 20K 的内存。

如果您的软件经常在此类服务器操作系统上启动和终止进程,您会发现几天或几周后操作系统开始显示奇怪的错误(通常是关于内存不足)。几天后,您要做的就是重新启动操作系统。重新启动后,它在几乎相同的时间段内都可以正常工作。

我在每个 2008 服务器 R2 x64(+SP1 和 -SP1)上都注册了这个问题,并在 2003 服务器 x64 上间接(不支持 rammap)。

在 Windows 7 x32(+SP1 和 -SP1)上未观察到该问题。

截屏 在此处输入图片说明

看这个问题探索的第一步页表快速增长

任何人都可以反驳或批准我的假设和观察吗?谁能告诉如何解决这种行为?这是错误还是不是?

windows memory 64-bit memory-leak

5
推荐指数
1
解决办法
1734
查看次数

ASP.NET 应用占用内存。Application/Session 对象的原因是什么?

因此,我们正在对由外部公司开发的 ASP.NET 应用程序进行压力测试。我们每秒执行大约 50 个请求,大约半小时后,48 个工作进程 (w3wp.exe) 中的每一个都达到大约 400 MB 并且还在计数。在 IIS7 上运行。

现在,在干预了 dotTrace 之后,我相当肯定这里存在内存泄漏,但是在不了解应用程序的情况下很难 100% 确定。当我们向开发人员提出这个理论时,他们在 30 秒后驳回了它,说“内存在 .NET 中是自动处理的”。如果 .NET 是最终数据,那么肯定会收集 48x~400MB 的垃圾吗?

无论如何,我习惯于使用 WinForms。如何在 ASP.NET 中创建内存泄漏?在 .NET 中(错误地)使用 Application 和 Session 对象是唯一的方法吗?

编辑

自从发布这个问题以来,我了解到在请求处理程序中保存对对象的静态引用(无论是 Web 服务类、Web 表单还是其他)会导致“泄漏”。在这里可能不是正确的术语,但无论如何......这我不确定,因为我认为处理程序类在 IIS 每次请求后都会被杀死并重新创建。

所以代码如下:

public class SomeService : IService
{
    public static List<RequestData> _requestDataHistory = new List<RequestData>();
    public void SomeRequest(RequestData data)
    { 
        _requestDataHistory.Add(data);
    }        
}
Run Code Online (Sandbox Code Playgroud)

迟早会让你的服务器崩溃。也许这对大多数人来说是显而易见的,但对我来说不是:-)

如果您删除了 static 关键字,仍然不确定这是否会成为问题。是否在每次请求后处理实例

iis-7 asp.net memory-leak

5
推荐指数
1
解决办法
7099
查看次数

如何调试 Node + Socket.io CPU 问题

我们正在使用 Express 3 运行 Node Socket.io 服务器。服务器使用Forever进行监控。服务运行良好,但 CPU 一整天都在增长,直到达到 90% 以上,然后突然回落到约 20%,如下图所示。我相信下降是由 Forever 重新启动应用程序引起的。

CPU 行为

我想知道的是;

  • 可能导致 Node.js 应用程序出现这种行为的典型因素是什么?
  • 有哪些工具/方法可用于调试节点应用程序中的内存泄漏/cpu 占用?

我认为这可能与 Socket.io 在用户断开连接后不清理资源有关,尽管文档说 Socket.io 会自动管理它。

任何帮助将不胜感激,这个问题使管理我们的服务器变得非常困难。请让我知道这个问题是否更适合 StackOverflow。

更新:经过更多研究,似乎 CPU 与连接数没有直接关系。我们的临界质量似乎是大约 1500 个并发连接,如下所示:

  • xhr 轮询:767
  • 网络套接字:692
  • jsonppolling:80

有时我们可以在只有 500 个连接的情况下 100% CPU,其他时候它的 1500 个连接。我知道发送消息的速率有很大的影响,但是速率是相当一致的。

debugging memory-leak cpu-usage socket node.js

5
推荐指数
1
解决办法
6472
查看次数

系统进程中无效句柄过多

我在系统进程 (Windows Server 2008R2 x64) 中遇到了无效句柄的增加。金额约为每周 1,000,000。

根据 Process Explorer,句柄类型是文件。从任务管理器看来,内存并未分配给任何进程,但图形显示高(且不断增长)的物理内存使用率。

如何避免或释放无效的系统句柄?

windows memory-leak handle-leak

5
推荐指数
1
解决办法
3225
查看次数

Server 2012 R2 Exchange 2013 处理泄漏

我有一个 DAG 设置,其中 Server 2012 R2 和 Exchange 2013 运行在三台服务器和另一台用于滞后副本的服务器上。

我们似乎在所有服务器上都有句柄泄漏,它们是否托管数据库似乎并不重要。然而,让我感到奇怪的是,句柄泄漏似乎并没有占用大量资源,例如,随着句柄的增加,它并没有使用大量的内存,即使其中一个服务器的峰值达到 261076 个句柄,它也没有确实增加了它的内存使用量。

句柄泄漏者是 Windows 进程 LSASS 这也是一个令人头疼的问题,尽管我正在使用 Perfmon 进行监控并且我使用过 RAMmap、Process Explorer 等。事实证明,由于 LSASS 本身不是原因,因此很难进行故障排除无论是“使用”LSASS 都是问题所在。

我在性能故障排除方面非常了解,但只有使用 .NET 等进行内部编码。这个盒子上的所有东西都是微软的。

所以我想我的问题是:

Handle Leaks 和 Memory Leaks 有什么区别 我可以在没有 Memory Leak 的情况下有 Handle Leaks 吗?如果是这样,纯 Handle Leak 超时的危险是什么?

我还能做些什么来解决这个问题?我打算安装 SDK 并使用 UMDH 和 Gflags 来拍摄内存快照,但它的增长不是很快,所以这会有点痛苦。

得到了很多信息,但不确定什么是相关的,所以你需要问的任何问题我都可以提供。

谢谢,

查尔斯

memory-leak windows-server-2012 iis-8 exchange-2013

5
推荐指数
1
解决办法
687
查看次数

如何限制Linux中应用程序的内存使用量?

我有一个闭源软件,有一些内存泄漏问题。是否有工具或解决方案可以在不使用“ulimit”的情况下在固定数量的内存中“沙箱”进程(一般来说,我需要一个每个应用程序的内存控制)

linux memory-leak

4
推荐指数
1
解决办法
4603
查看次数

具有潜在泄漏的 IIS 内存管理和阈值

我们正在运行一些 X64 Win Server 2012 网络服务器(所以 IIS 8)。

我们注意到盒子上的空闲内存一直处于 5-10% 的空闲状态。我们实际上在这些机器上运行了相当多的应用程序(13 个站点,超过 13 个应用程序池的 80 个应用程序)。每个站点的大部分代码都是重复的,因为它们对应于不同的数据库和物理站点,但应用程序是相同的。

我们非常确信我们在应用程序中存在内存泄漏,因为内存一直在增长,所以我们正在直接关注这一点,但我对 IIS 的内存分配和管理感到困惑。我想知道 IIS 8 或 x64 服务器是否有任何不同(我们最近刚搬到 x64)。

所以基本上我们的每个网络服务器都有 6GB 的内存,并且有 5-10% 的可用内存。我们确定泄漏的最高应用程序使用了高达 1.2GB 的内存。下一个大约是 800MB,其余的平均大约为 400-500MB(所有这些值都是私有内存,如任务管理器中所见)正如我所说,代码是重复的,所以如果一个站点存在泄漏,它将在所有站点中他们,只是不同的物理位置可以打开或关闭某些功能,这解释了巨大的差异。

当我们解决问题时,我们决定只增加内存,这样我们就不会遇到问题。所以昨晚我关闭了每台服务器并将内存翻倍至 12GB。今天早上,3 台服务器的内存使用率分别为 77%、80% 和 82%。所有进程的内存使用量都增加了 1.5-2 倍。

所以现在我很困惑。真的是内存泄漏吗?或者是否有某种内存预分配?或者它永远不会释放内存,除非另一个进程请求它一个 SQL Server 或什么?

如果当内存翻倍时它们突然变得如此巨大,那么将内存级别保持在 6GB 的原因是什么?是否设置了阈值?IIS/ASP 是否只是在内存不足或什么的情况下才进行垃圾收集?

任何答案表示赞赏。

iis memory memory-leak

4
推荐指数
1
解决办法
6590
查看次数

当内存严重不足时自动终止/重新启动进程

我有一个 Debian Wheezy VPS 盒子,在生产环境中运行几个 Django 应用程序。理想情况下,我会尝试通过优化应用程序、添加更多 RAM 或使用交换来增强内存占用问题。但问题是,我怀疑我会从优化 Django 应用程序中获得很多内存优化(堆栈是开源且强大的),并且添加 RAM 对我来说是一个成本限制(这是一个远程 VPS),而且,主机不提供使用交换的选项!

因此,与此同时(当我等待获得更多资源以提供更多 RAM 时),我希望减轻服务器耗尽内存的情况,这样我只需请求重新启动 VPS(此时,我甚至无法通过 SSH 进入盒子!)。

因此,我希望解决方案能够检测进程(或者一般来说,系统总内存使用量)何时超过某个临界量(目前,例如免费 RAM 下降到 10%)——我已经值得注意的是,VPS 运行很长时间后,某些大型应用程序的流量突然变得很大(无论如何,大多数只是临时应用程序)。

因此,我希望能够终止/重新启动有问题的进程 - 最有可能是 Apache。在这些情况下手动完成的哪种解决方案可以恢复正常的内存使用水平 - 暗示可能一个或多个 Django 应用程序存在内存泄漏?


简单来说:

  1. 监控整体系统 RAM 使用情况
  2. 当空闲 RAM 低于给定的临界阈值(比如低于 10%)时,终止/重新启动有问题的进程 - 或者更简单,如果我们从我当前的日志分析(使用 linux-dash)假设 Apache 通常是违规者,然后杀死/重新启动它。
  3. 冲洗并重复...

linux monitoring memory process memory-leak

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

Centos5内存泄漏问题

我最近刚从我们过去 3 年拥有的共享主机中购买了一台专用服务器,作为一个小型社区站点的升级。我已经安装了 httpd、php 和 mysql(通常用于网络服务器)。我为几个虚拟主机配置了 httpd 并安装了 webmin 和 cacti。一切似乎都运行得很顺利,直到我注意到图表中关于仙人掌内存使用情况的某些内容。

我的服务器有 2gig RAM,出于某种原因,其中 1.7gig 正在使用中。我通过 SSH 以 root 身份登录并重新启动服务器,然后运行“top”。它立即使用 600meg RAM 并保持缓慢增加,但看起来没有任何东西在使用 RAM。我跑了'ps aux'。但出于某种奇怪的原因,看起来好像没有正在运行的应用程序使用超过 2% 的内存。如果我将“ps aux”中的所有内存使用量加起来,结果约为 20.6%,我认为接近 400meg RAM,此时正在使用超过 800meg RAM。

所以,在我看来,好像使用了大约 400meg 的 ram,而没有应用程序声称它。随着时间的推移,内存会慢慢增加,直到用完所有可用的 RAM。虽然,我还没有让它达到那个地步。

我不太确定如何弄清楚下一步该做什么来尝试纠正这个问题。任何帮助都将不胜感激。

来自 cacti 的内存使用图: http://i56.tinypic.com/2wmhyzp.png

输出“的ps aux”和“自由-o”

如果需要更多信息,请告诉我。

mysql linux httpd centos memory-leak

3
推荐指数
1
解决办法
752
查看次数