首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用dotMemory创建内存快照会暂停应用程序吗?

用dotMemory创建内存快照会暂停应用程序吗?
EN

Stack Overflow用户
提问于 2018-07-27 03:59:47
回答 1查看 693关注 0票数 1

我有一个内存泄漏,只有在生产中( webapp (Asp.Net MVC))。

我想用dotMemory (或类似于它的工具)拍摄一个内存快照,看看到底发生了什么。

然而,我不确定这是否会导致生产暂停和混乱任何当前的要求。

我在机器上有32 gb的RAM

所以我的问题是:

我可以获得一个内存快照而不被对方阻塞/影响请求吗?

EN

回答 1

Stack Overflow用户

发布于 2018-07-27 07:07:44

是的,dotMemory和任何其他通过Microsoft工作的内存分析器都会暂停应用程序一段时间,从毫秒到分钟,这取决于内存中的数据数量。

我建议使用一个标准的Windows内存转储,在正常情况下也需要一些时间,但是有一种技术可以帮助避免它。然后,您可以在dotMemory或任何其他支持Windows转储的工具中分析它。

https://blogs.msdn.microsoft.com/granth/2012/07/02/how-to-take-a-memory-dump-of-an-asp-net-application-pool-quickly/

当我在微软运行内部(TFS)时,我们有时会遇到一些只能通过分析内存转储才能理解的问题。这在先驱者和狗食服务器上尤其如此,这些服务器运行的是前Beta版本。如果问题足够严重(崩溃、内存泄漏等),需要一个内存转储,这可能意味着它需要它,以便我们可以循环应用程序池,使服务器恢复正常。 转储ASP.NET应用程序池的问题是,所有应用程序池都使用w3wp.exe进程名。因此,在进行转储之前,需要确定哪个进程对应于所针对的应用程序池。如果您无法通过查看流程所有者(例如服务帐户/应用程序池标识)来判断。简单(但速度慢)的方法是打开任务管理器并将“命令行”列添加到显示中。然后,您将在w3wp.exe进程的命令行中看到每个应用程序池名称。 占用大量内存的应用程序池的另一个问题是,当内存被转储到磁盘时,进程将被挂起很长时间。如果这比配置的ASP.NET进程“ping时间”花费的时间更长,则IIS将在转储过程的中途终止您的进程(并启动一个新的进程),您将失去您的复制程序。 为了解决这个问题,Sysinternals Procdump.exe中有“-r”标志可用。它利用了Windows7/Windows2008R2的一个功能,即“克隆”一个进程以获取转储,并以比正常更快的速度解除原始进程。

代码语言:javascript
复制
-r      Reflect (clone) the process for the dump to minimize the time 
        the process is suspended (Windows 7 and higher only).

然后,我们可以使用IIS管理工具来查找特定应用程序池的进程ID,现在我们可以将一个简单的批处理文件放在TFS服务器的桌面上进行快速访问。 DumpTfsAppPool.cmd创建以下批处理文件,并将其放在与Procdump.exe相同的目录中。不要忘记创建/更新转储位置的路径。

代码语言:javascript
复制
%windir%\system32\inetsrv\appcmd list wps /apppool.name:"Microsoft
Team Foundation Server Application Pool" /text:WP.NAME >
"%temp%\tfspid.txt"


:: ProcDump.exe (faster, reflects/clones the process for the dump to
minimize the time the process is suspended (Windows 7 and higher
only))

for /F %%a in (%temp%\tfspid.txt) do "%~dp0\procdump.exe" -accepteula
-64 -ma -r %%a f:\dumps pause
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51550574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档