【问题标题】:Webservice ApplicationpoolWeb服务应用程序池
【发布时间】:2009-07-24 01:37:13
【问题描述】:
我有两个不同的 Web 服务(在本地机器上运行)并指向一个应用程序池(1.我可以这样做吗?是否有任何性能问题?)。我对应用程序池的工作方式知之甚少。
另一个 .Net 应用程序正在使用两个 Web 服务,但经常有一个 Web 服务没有响应,它在 .Net 应用程序中由 ssis 包内部调用。
可能是什么原因以及如何确保它一直响应,有没有更好的方法来提高性能?
如果有遗漏或任何进一步的信息,欢迎评论
【问题讨论】:
标签:
asp.net
web-services
iis
ssis
【解决方案1】:
是的,您可以将多个 Web 应用程序用于同一个应用程序池。
这是性能问题吗?如果真的是高流量或者是错误代码,那么可能。
应用程序池允许将站点推送到不同的进程,从而降低相互影响的风险。如果一个应用程序池包含存在内存泄漏的应用程序/Web 应用程序,则泄漏只会影响该特定进程,至少直接影响。每个进程都可以通过时间或系统参数进行回收,从而降低了某些东西处于不良状态的风险。
性能?应用程序池的另一个好处是能够同时运行多个实例(将每个应用程序放在自己的池中时类似的事情)。这样做的好处是一次可以处理更多的请求。不利的一面是您不能使用进程内会话状态,并且您的应用程序状态将为进程的每个实例复制。您需要考虑在会话中保留了多少“东西”以及缓存方案将如何受到影响,但是,它有可能为 Web 应用程序提供更大的可扩展性。
您提到调用 SSIS...我假设这是一项长期运行的服务,因此您可能希望将对该进程的调用推送到可以在 Web 服务请求之外处理的某种队列。 MSMQ 可能适合您。如果像这样使用队列,您将启动代码的运行,然后有办法检查调用的状态以查看它是否已完成。
【解决方案2】:
我同意 Greg Ogle 的观点,但我认为还有一点值得一提。如果有任何问题,在进行故障排除时,将应用程序拆分为多个应用程序池也会给您带来额外的好处。如果您将各种应用程序分开,您可以在需要时具体说明哪些应用程序池与哪些 w3wp.exe 进程相关。比如当 w3wp.exe 进程占用 98% 的 CPU 时。