当ASP.NET应用程序在应用程序池中运行时,是仅运行该应用程序的单个实例,还是运行该应用程序的多个实例?我知道会产生几个工作进程线程.工作进程线程与应用程序池中运行的应用程序的关系是什么?
我想如果有多个应用程序记录到同一个日志,我可能无法正确解释结果.如果一个重新启动但另一个没有重启,那么日志并没有真正告诉我很多关于重启发生时发生的事情.
更新1
查看this page,我找到以下信息:
An application pool defines a group of one or more worker processes,configured with common settings that serve requests to one or more applications that are assigned to that application pool. Because application pools allow a set of Web applications to share one or more similarly configured worker processes,they provide a convenient way to isolate a set of Web applications from other Web applications on the server computer. Process boundaries separate each worker process; therefore,application problems in one application pool do not affect Web sites or applications in other application pools.
但我仍然感到困惑.我从经验中知道,我可以分配两个完全不同的应用程序来使用相同的应用程序池.这是否意味着将产生两个工作进程?或者可以为第一个应用程序生成多个工作进程,并为第二个应用程序生成多个工作进程?如果在一个工作进程中发生问题,是否可以删除该应用程序池中运行的每个应用程序?
更新2
从this page about using WinDbg开始,我发现了这个信息(强调我的):
In IIS 5.x,there is only one Aspnet_wp.exe worker process and one debugger thread. Consequently,only one debugger can be attached to the Aspnet_wp.exe process at a time. This can pose a problem if you’re dealing with multiple Web applications on the same machine. In IIS 6.0,you can coerce an AppDomain to run in a separate application pool. (For more information,see “IIS 5.x Process Model” and “IIS 6.0 Process Model” in Chapter 1.) Separate application pools provide multiple W3wp.exe processes. Multiple debugger threads are created in these processes (one in each),allowing you to debug more efficiently.
这听起来像每个应用程序池获得一个w3wp.exe进程.我能解释那个吗?如果是这样,这仍然适用于IIS 7.5吗?
解决方法
两个同时访问该站点的用户可以在不同的线程上运行,这意味着它们可以同时运行.这意味着任何日志记录都可以散布值.您可能希望向日志记录添加会话值,以便可以根据会话进行排序.
应用程序池重启(回收)是正常的,一天20次重启似乎并不常见.它们可以每天发生多次,并且IIS控制何时重新启动应用程序池.只要感觉需要清理池,它就会执行此操作.应该以这样的方式编写应用程序,以便从中优雅地恢复(即,如果应用程序池重新启动,不要在会话中保留任何无法轻松重新创建的内容) .
当您的应用中发生未处理的异常时,应用池也可以重新启动.在这种情况下,您想要解决这个原因.此类异常通常记录在事件日志中.
1 – 虽然您可以将应用程序池配置为具有多个工作进程(这称为Web Garden),但根据我的经验,这不是典型(通常也不建议)的配置.
2 – 请注意,使用IIS管理器可以将应用程序配置为log recycle events to the Windows Event Log.您还可以使用IIS管理器设置发生多种不同类型的回收事件的阈值.