Asp.net 如何提高IIS进程优先级(对于w3wp和IIS应用池)?

Asp.net 如何提高IIS进程优先级(对于w3wp和IIS应用池)?,asp.net,iis,iis-7,remoting,Asp.net,Iis,Iis 7,Remoting,有一个带有一组web服务的ASP.NET应用程序,还有一个调用这些web服务的WinForms应用程序 w3wp.exe(处理asmx调用)运行特殊的进程,这些进程执行非常“困难”的工作(如压缩、xml解析等)。这是一个很长的故事,为什么我们需要在单独的进程中完成,为什么我们不在w3wp.exe中运行此代码-这在这里并不重要。一定是这样 如果多个请求同时来自多个用户,可能会有30-40个这样的进程,它们会消耗CPU。它们消耗了大量的CPU资源,几乎没有为IIS本身留下任何CPU资源 因此,接下来

有一个带有一组web服务的ASP.NET应用程序,还有一个调用这些web服务的WinForms应用程序

w3wp.exe(处理asmx调用)运行特殊的进程,这些进程执行非常“困难”的工作(如压缩、xml解析等)。这是一个很长的故事,为什么我们需要在单独的进程中完成,为什么我们不在w3wp.exe中运行此代码-这在这里并不重要。一定是这样

如果多个请求同时来自多个用户,可能会有30-40个这样的进程,它们会消耗CPU。它们消耗了大量的CPU资源,几乎没有为IIS本身留下任何CPU资源

因此,接下来的问题是:当以下HTTP请求到达此IIS时,IIS无法处理它们:它甚至无法将它们传递到w3wp.exe,因为服务器被“轰炸”。因此,在高峰时间,30个用户已运行其查询,31个用户在WinForms客户端中收到WebException“超时过期”

我在互联网上找到了很多解释如何调整IIS的文章,但是没有人考虑到其他进程和/或应用程序可以在同一台机器上运行这一事实。没有人告诉我们该怎么做才能让IIS获得更高的优先级


那么,接下来的问题是:有没有办法“解释”IIS在默认情况下应该以更高的优先级启动apppool(svchost.exe)和w3wp.exe?

我在Windows Server 2008 r2中遇到了这个问题。 我有一个windows服务(它使用并行处理),这会让我的CPU膨胀很多&没有给IIS和SQL Server留下任何东西

因此,我将处理器关联设置为windows服务,以仅使用特定的处理器。 进入任务管理器->右键单击流程->设置关联。

这使得其他处理器可以自由地用于SQL和IIS


在某种程度上,它降低了windows服务的生产率,而windows服务现在只能使用有限的处理器,但这并不重要。

以较低的优先级启动“特殊进程”怎么样?听起来是时候添加更多硬件了。@AaronS这听起来更像是糟糕的应用程序设计。如果服务器一次做30件事情而被淹没,那么它应该随着时间的推移分散任务。您可以轻松开发异步执行任务的ASP.NET应用程序,并在后台任务完成时向用户报告。为什么人们在不了解域的情况下得出结论?很难解释为什么执行某些任务的代码在这些单独的进程中运行。这与COM(一个Microsoft的非COM对象)有关,COM不会释放内存,如果该对象的两个实例在一个进程中工作,则该对象无法正常工作。这就是为什么代码不能在w3wp.exe中工作,而是放在单独的进程中的原因。但是无论如何,如果这段代码在w3wp中工作,或者不在w3wp中工作,它将极大地“轰炸”服务器—CPU和硬盘驱动器。因此,问题更一般:如果有什么东西“轰炸”服务器,如何处理IIS?