我有一个在我们的两个实时服务器上运行的大型Web应用程序。我们的服务器端部分C#代码调用第三方应用程序为我们执行任务。
该任务大部分时间都有效,但在某个时刻它会停止工作,直到AppPool被回收为止。
这一切都发生在w3wp.exe中,所以我可以看到它在这样的进程监视器中运行(当它不工作时),
Thread Create
Access the file PreviewGenerator.exe
Hive unloaded (this is the registry)
Thread Exit
当它工作时就像这样,
Thread Create
Access the file PreviewGenerator.exe
Process Start
Does heaps of stuff with PreviewGenerator.exe including reading / writing / registry, etc.
Process Exit
Hive unloaded
Thread Exit
如何调试AppPool中发生的事情以及为什么启动单独的进程在某些时候无法正常工作?
答案 0 :(得分:0)
我发现最好的办法是在IIS中为我的应用程序创建一个单独的应用程序池,并设置它可以使用的RAM量的上限。此外,我发现打开应用程序池设置下的“生成回收事件日志条目”项非常有用。
然后,您可以转到系统事件日志,并使用“WAS”源过滤掉项目,以了解应用程序池中的内容,重新启动时以及停止等待时等等。
我认为我们的主要问题是IIS框内存不足。调整应用程序池并添加一些额外的RAM似乎已经解决了它。