asp.net – 应用程序池和工作进程线程之间的关系是什么?
|
我正在解决ASP.NET应用程序中的重新启动问题.该应用程序每天重启大约20次.我们强烈怀疑应用程序的一部分,因为重新启动时此特定功能何时投入生产.我使用log4net库为这些页面添加了一些日志记录,但是我在解释日志时遇到了问题. 当ASP.NET应用程序在应用程序池中运行时,是仅运行该应用程序的单个实例,还是运行该应用程序的多个实例?我知道会产生几个工作进程线程.工作进程线程与应用程序池中运行的应用程序的关系是什么? 我想如果有多个应用程序记录到同一个日志,我可能无法正确解释结果.如果一个重新启动但另一个没有重启,那么日志并没有真正告诉我很多关于重启发生时发生的事情. 更新1 查看this page,我找到以下信息:
但我仍然感到困惑.我从经验中知道,我可以分配两个完全不同的应用程序来使用相同的应用程序池.这是否意味着将产生两个工作进程?或者可以为第一个应用程序生成多个工作进程,并为第二个应用程序生成多个工作进程?如果在一个工作进程中发生问题,是否可以删除该应用程序池中运行的每个应用程序? 更新2 从this page about using WinDbg开始,我发现了这个信息(强调我的):
这听起来像每个应用程序池获得一个w3wp.exe进程.我能解释那个吗?如果是这样,这仍然适用于IIS 7.5吗? 解决方法是的,每个应用程序池通常是一个进程1,但可以包含多个线程.您可以将多个站点分配给应用程序池,并且这些站点都将在同一进程下运行,但是它们将在不同的“应用程序域”下运行,这些安全上下文将一个站点的代码与另一个站点的代码分开,即使它们是’重新在同一个应用程序池上运行.两个同时访问该站点的用户可以在不同的线程上运行,这意味着它们可以同时运行.这意味着任何日志记录都可以散布值.您可能希望向日志记录添加会话值,以便可以根据会话进行排序. 应用程序池重启(回收)是正常的,一天20次重启似乎并不常见.它们可以每天发生多次,并且IIS控制何时重新启动应用程序池.只要感觉需要清理池,它就会执行此操作.应该以这样的方式编写应用程序,以便从中优雅地恢复(即,如果应用程序池重新启动,不要在会话中保留任何无法轻松重新创建的内容) . 当您的应用中发生未处理的异常时,应用池也可以重新启动.在这种情况下,您想要解决这个原因.此类异常通常记录在事件日志中. 1 – 虽然您可以将应用程序池配置为具有多个工作进程(这称为Web Garden),但根据我的经验,这不是典型(通常也不建议)的配置. 2 – 请注意,使用IIS管理器可以将应用程序配置为log recycle events to the Windows Event Log.您还可以使用IIS管理器设置发生多种不同类型的回收事件的阈值. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 查找应用程序根URL而不使用
- ASP.NET Razor查看Html.TextBox大小/宽度
- asp.net-web-api – ASP.NET Web API HTTP删除405方法不允许
- iis – ASP.NET网站文件被黑了……怎么样?
- asp.net-mvc – 在MVC3中使用两个可选参数的路由不起作用
- asp.net – 如何在发布链接时以编程方式检查“无缩略图”复
- asp.net-mvc – ASP.NET MVC QueryString默认覆盖提供的值?
- 在ASP.NET MVC中解码HTML 3
- .net – Cache.Add绝对到期 – 是否基于UTC?
- asp.net-mvc-3 – 不支持使用相同的DbCompiledModel来针对不
- asp.net-4.0 – 我可以强制asp设置与id相同的名称
- 使用System.Net.Mail中的SMTP发送邮件(带附件)
- asp.net-mvc – 在默认路由的ASP.NET MVC中的Url
- 使用VSCode,DNX和kestrel运行第一个ASP.NET 5应用
- asp.net-mvc – 获取索引值razor foreach
- asp.net – 在localhost中将IIS设置为Web开发服务
- asp.net-mvc – 如何将MVC路由添加到特定控制器?
- ASP.NET标识会话超时
- asp.net-mvc – ASP.Net MVC输出缓存:指令或配置
- asp.net – 没有透明度的div中的div的不透明度
