标签: w3wp

为什么我在VS2010中关闭Just My Code时无法附加到w3wp.exe进程?

我正在使用VS2010 Beta 2并且我打开了.NET Framework源代码,因此我不得不禁用"Just My Code".但是现在w3wp.exe进程没有显示在我可以附加到的进程列表中.我已经同时显示了所有进程框.这是一个错误还是我错过了什么?

debugging w3wp visual-studio

9
推荐指数
2
解决办法
2万
查看次数

随机w3wp.exe在.net 4中崩溃

我有一个网站已经启动并运行了大约8个月现在.它正在运行.net 4集成模式.

最近我开始得到一些"随机"w3wp.exe崩溃,并且在其中5个之后,IIS快速失败保护启动并且我必须手动登录到服务器并再次启动应用程序池.

以下是事件查看器对错误的说法:

Faulting application name: w3wp.exe, version: 7.5.7601.17514, time stamp: 0x4ce7afa2
Faulting module name: nlssorting.dll, version: 4.0.30319.296, time stamp: 0x504835c7
Exception code: 0xc00000fd
Fault offset: 0x000000000000191f
Faulting process id: 0x1998
Faulting application start time: 0x01ce6e6b9b80c949
Faulting application path: c:\windows\system32\inetsrv\w3wp.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\nlssorting.dll
Report Id: d9cf3164-da5e-11e2-8cc5-f46d0440f6d5
Run Code Online (Sandbox Code Playgroud)

在崩溃后直接,我在事件查看器中得到一个"信息"日志,它在底部给我一个.wer文件的位置.

这是.wer文件包含的内容:

Version=1
EventType=APPCRASH
EventTime=130162847687759734
ReportType=2
Consent=1
ReportIdentifier=d7c5e520-da5e-11e2-8cc5-f46d0440f6d5
IntegratorReportIdentifier=d7c5e51f-da5e-11e2-8cc5-f46d0440f6d5
Response.type=4
Sig[0].Name=Application Name
Sig[0].Value=w3wp.exe
Sig[1].Name=Application Version
Sig[1].Value=7.5.7601.17514
Sig[2].Name=Application Timestamp
Sig[2].Value=4ce7afa2
Sig[3].Name=Fault Module Name
Sig[3].Value=nlssorting.dll
Sig[4].Name=Fault Module Version
Sig[4].Value=4.0.30319.296
Sig[5].Name=Fault Module Timestamp
Sig[5].Value=504835c7
Sig[6].Name=Exception …
Run Code Online (Sandbox Code Playgroud)

asp.net crash w3wp

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

缓慢的ASP.NET应用程序加载时间 - 我可以跟踪/跟踪/计算整个加载周期吗?

我正在处理的ASP.NET Web应用程序项目随着时间的推移而变得越来越慢(在IIS或.NET开发服务器中).目前需要:

  • 通过F5调试加载1:28分钟
  • 在构建之后在浏览器中刷新41秒(不重建)

该机器速度相当快 - 一台Core 2 Quad 2.40ghz,8 gig o'RAM,在HyperV下运行dev机器,分配给dev VM的2 gig o RAM.

有没有办法跟踪/报告初始负载的整个周期?如果我能看到基本的IIS工作进程启动需要多长时间,加载DLL,运行实际的.NET代码,那就太好了.

我知道我可以在代码上使用分析器 - 它没有发现任何超慢的DB连接建立时间,但我想在处理实际页面之前对这些东西的性能有一些了解.在整个过程中我可以看到CPU监视器有点达到100%,RAM使用量略有增加 - 但我正在寻找更好的洞察力,希望能有所改善.

虽然我没有在项目开始时(4个月前)进行任何测量,但我完全确定重装是一个相对轻而易举的事.

任何帮助都非常感激,程序员 - 他们只能喝 - 这么多咖啡,而建立 - 发生.

更新:

JetBrain的dotTrace非常出色(对于这个例子),谢谢.它具有启动Web项目的完美界面,并且很快突出显示大部分时间都在Application_Start()中(在Global.asax中).

其他选项不会选择这个,因为:

  • 跟踪选项只能从PreInit开始,缺少的Application_Start()调用.

  • 秒表电话会要求我知道去哪里找,或恢复到printf风格调试的美好时光...

  • nprof想要定位一个.exe,它会在尝试连接到新的w3wp.exe实例时错过目标区域...

asp.net performance w3wp load-time

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

ASP.NET:空载时CPU使用率高

几个星期后我面临着一个巨大的问题.我已经在IIS7(W2008 SP1)下托管了一个asp.net应用程序,并且每隔几个小时就开始消耗50%的CPU,可能没有用户连接.这是可以理解的,因为我们使用Quartz.net来进行一些应用程序的重新定义,但是我们还没有重现这个问题.

这是使用JetBrains dotTrace 3.1制作的跟踪,而CPU很高:http://mycenter.info/tmp/DotTraceSnapshot.zip

通常浪费CPU的进程是w3wp.exe,但在过去的几天里,sqlserver(2008)和memcached(1.2.1,以及周一更新到1.2.4 beta)也杀死了CPU.奇怪的是,有些时候memcached开始消耗100%并且其统计数据显示它很安静,但是在发出请求时它工作正常.

这是w3wp的故障转储(或堆栈跟踪转储),使用WinDbg :(基于本指南:http://blogs.technet.com/marcelofartura/archive/2006/09/15/troubleshooting-iis-100-cpu -issues-step-by-step-intermediary.aspx)

0:000> ~
.  0  Id: 1be4.1d3c Suspend: 1 Teb: 7ffdf000 Unfrozen
   1  Id: 1be4.b1c Suspend: 1 Teb: 7ffde000 Unfrozen
   2  Id: 1be4.12a0 Suspend: 1 Teb: 7ffdd000 Unfrozen
   3  Id: 1be4.19d0 Suspend: 1 Teb: 7ffdc000 Unfrozen
   4  Id: 1be4.1714 Suspend: 1 Teb: 7ffd7000 Unfrozen
   5  Id: 1be4.1a18 Suspend: 1 Teb: 7ffd6000 Unfrozen
   6  Id: 1be4.12ac Suspend: 1 Teb: 7ffd5000 Unfrozen
   7  Id: 1be4.dec Suspend: …
Run Code Online (Sandbox Code Playgroud)

asp.net performance crash-dumps w3wp

6
推荐指数
1
解决办法
4509
查看次数

IIS7:错误应用程序w3wp.exe,这些崩溃的根本原因是什么?

我们的网站是在.NET中,但也有一些旧的ASP和32位库.它已经工作了一段时间(2年).但是在过去的一个月里,我们在IIS7服务器上看到了以下错误,我们无法追踪并修复:

"错误应用程序w3wp.exe,版本7.0.6001.18000,时间戳0x47919413,错误模块kernel32.dll,版本6.0.6001.18215,时间戳0x4995344f,异常代码0xe053534f,错误偏移0x0002f328,进程ID 0x%9,应用程序启动时间0x% 10."

我们能够重现错误:

  • 我们的一个.ASPX页面开始加载,执行代码和查询(我们在整个页面都有response.flush()来跟踪代码中断的位置),然后它突然停止,我们在IIS中得到上述错误.

  • 页面停止加载,没有response.flush(),它没有重定向到我们的error.aspx页面(在web.config中配置)

  • 错误不会一直发生.有时,它连续发生3次,然后它正常工作15分钟不间断,并正确重定向到error.aspx.

  • 我们得到的错误是经典的:"BOF或EOF都是True,或者当前记录已被删除."

  • 当错误发生时,从任何浏览器的页面挂起和其他所有会议在同一台计算机上都挂着网页以及(顺便说一句,我们只允许1个工作进程,同时我们正在测试).从其他计算机,该网站加载正常.

  • 我可以回收应用程序池,杀死w3wp.exe,重启IIS.没什么可做的.再次成功加载页面的唯一方法是重新启动处理会话状态的MS SQL.我不知道这是为什么,但我们猜测,在用户会话Cookie的浏览器指向它没有正确结束(由于上述崩溃)和IIS正在等待它终止处理更多的代码(线程? ).如果有人能够更好地解释这一点,那将非常有帮助.是否有超时我们可以设置为"终止"线程?它是否与MS SQL相关?

我还查看了私有和虚拟内存的用法,因为我认为我们的代码不是最有效的,我确信我们有剩余的内存泄漏.但是,即使私有和虚拟内存都很低(每个100MB以下),我也看到了页面崩溃.

我已经使用调试诊断和WinDbg,从而使在此间表示:http://blogs.msdn.com/b/tess/archive/2009/03/20/debugging-a-net-crash-with-rules-in-debug-diag .aspx,但我们无法使windbg工作,这是我们目前正在尝试做的事情.

如果有人可以帮助我们或指出我们朝着正确的方向发展,那真的很棒,谢谢.

iis iis-7 application-pool w3wp

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

是否可以更改每个应用程序池的 w3wp.exe 的名称?

是否可以更改某个应用程序池的 w3wp.exe 名称?我使用的是 Windows 7 的 IIS 7.5。

当我开始调试时,很难区分进程(因为它们都称为 w3wp.exe)。如果我可以更改进程的名称,那就太好了。

这是我在 Visual Studio 中看到的:

在此输入图像描述

asp.net iis w3wp visual-studio

6
推荐指数
1
解决办法
1887
查看次数

确定Web角色实例的关联w3wp进程

我正在努力监控Azure服务的性能.

目前有两个Web角色实例(针对同一网站)运行 - 每个实例都有自己的W3WP.exe(w3wp和w3wp#1)

如何找出哪个w3wp进程属于哪个角色实例?

有了这些信息,我想给azure.diagnostics.monitor提供一些性能计数器 - 即Process(w3wp)\ ProcessorTime(%)和Thread Count.但是为了获得任何有意义的数据,我必须将w3wp进程的进程ID附加到性能计数器(例如Process(w3wp_PID)\ processorTime(%)) - 不知道语法是否正确,但有一种方法可以附加PID)

所以AzureStorage表中的最终结果WADPerformanceCounters只有以下条目:

WebRoleInstance_n_0 | process(w3wp_1033)\processorTime (%) |  12.4
WebRoleInstance_n_1 | process(w3wp_1055)\processorTime (%) |  48.4
Run Code Online (Sandbox Code Playgroud)

atm就像

WebRoleInstance_n_0 | process(w3wp)\processorTime (%) |  12.4
WebRoleInstance_n_1 | process(w3wp)\processorTime (%) |  12.4
Run Code Online (Sandbox Code Playgroud)

我想:如果我为每个角色启动了DiagnosticsMonitor,那么监视器将使用正确的进程 - 属于启动监视器的Roleinstance.但实际上这不起作用 - 或者我认为它不起作用 - 至少在查看结果值之后.

// update:在manage.windowsazure门户上,您可以为性能监视定义自定义指标.这里可以选择专门监控的webrole实例.这也是我想要做的.对此页面实际执行的操作的见解也可能有所帮助.

比较:http: //puu.sh/1xp7q

他们只想到获取此信息的愚蠢方式是:获取每个w3wp启动前后所有进程的列表 - 确定添加了哪个进程,然后确定代码库上下文明智地启动了哪个角色实例.

multiple-instances w3wp azure performance-monitor azure-web-roles

6
推荐指数
1
解决办法
1270
查看次数

我可以为 IIS6 的 w3wp.exe 设置进程标题吗?

在 Visual Studio 的“附加到进程”对话框中,我可以看到每个可用进程的标题列。有什么方法可以让我为特定的 w3wp.exe 进程设置标题以反映它托管的应用程序池吗?

PS - 我知道 iisapp.vbs 以及它使我能够识别哪个 w3wp.exe 属于哪个应用程序池的方式。我的目标是在这里提供一个更用户友好的解决方案:)

PPS - 当前运行 IIS6。

debugging iis-6 w3wp visual-studio

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

具有大量句柄的IIS工作进程(w3wp.exe)

我们的IIS工作进程具有高且稳定增长的句柄数。线程计数似乎稳定,但句柄计数一直上升,直到由于不活动而导致AppPool关闭。

为了进行测试,我们使用其自己的AppPool配置了一个简单的Web应用程序(只是一个带文本的.html文件)。如果直接调用html文件->没问题。一旦调用不存在的页面,句柄就会开始上升。高句柄计数仅在带有4.0的集成模式下发生-经典和/或2.0没有问题。

泄漏的句柄似乎是事件句柄。这是来自内存报告:

在此处输入图片说明

在另一台服务器上进行了完全相同的测试,并且不会发生此问题。我已经尝试使用windbg并打开了一个Microsoft支持案例,但没有结果。

.net iis memory-leaks handle w3wp

5
推荐指数
0
解决办法
3310
查看次数

使用 dotMemory 了解 w3wp.exe 中的非托管内存

我有一个 ASP.NET MVC Web 应用程序,它在具有大量可用 RAM 的服务器 (Windows Server 2016) 上的自己的应用程序池(.NET 4.7.1 应用程序、64 位、IIS 10)中运行。在启动应用程序并加载第一个网页后,我查看任务管理器,发现 w3wp.exe 进程使用了​​大量内存:

  • w3wp.exe,853 MB 内存(专用工作集)

考虑到它只是一个网络应用程序,我认为这有点太多了。所以我启动 dotMemory 并附加到该进程。我得到这些结果:

点内存截图

此处,它表示已使用的总内存为 1.1 GB(不仅仅是 853 MB),其中非托管内存为 429.5 MB,其余的是堆。

当我得到它的快照时(如屏幕截图所示),它显示总共 1.08 GB,其中 .NET 为 75.06 MB(其余部分是非托管的)。这些数字似乎并没有相加。一个显示 429.5 非托管内存,另一个显示 1 GB 非托管内存。这是否意味着堆在快照中被计为非托管内存?

所有 dotMemory 让我看到的是 63.73 MB 的 .NET 使用内存,在这里我可以看到我拥有多少个类型的对象。


我很想知道剩下的是什么。我无法查看的另一 GB 内存中有什么?是GC还没发布的东西吗?如果是,为什么在 dotMemory 中运行“强制 GC”不会显着减少它?

另外,所有非托管内存从哪里来?我在网上能找到的只是,如果某些位图或 P/Invoke 内容未正确释放,通常会发生非托管内存泄漏。但我的应用程序池从一开始就有这种用法(因此它不会随着时间的推移而累积泄漏),并且它既不处理位图或图像,也不调用本机 DLL 或使用这样做的第三方库。另一种选择可能是它是 ASP.NET 缓存,但它只使用很少,而且我认为在单页加载后它不会有 400 MB。

我过去观察到,如果 IIS 应用程序池有大量可用的可用内存,那么它们可能会非常贪婪,但这似乎相当过多 - 1 GB 与 60 MB。我不明白那里发生了什么事。

我不认为存在内存泄漏,因为我可以让应用程序池运行数周,并且内存不会显着增加。只是当我认为它不应该使用那么多内存时,它使用了相当多的内存。

您能帮我找到一些学习资源或工具来帮助我调查该问题吗?

asp.net iis memory-management application-pool w3wp

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