首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MVC web应用程序和API web应用程序能在同一个池中运行吗?

MVC web应用程序和API web应用程序能在同一个池中运行吗?
EN

Stack Overflow用户
提问于 2017-04-19 06:57:15
回答 1查看 259关注 0票数 0

我正在开发一个ASP.NET MVC web应用程序(C#),它是整个大型应用程序的一个模块(主要是基于桌面/win服务的- VB.NET)。目前,应用程序对web服务(作为API提供)进行HTTP调用,这是它自己的独立应用程序(也使用MVC、VB.NET)。也许不是我设计它的方式,但它是我继承的。

我的问题是:如果我在本地IIS中托管MVC应用程序,并在中运行API项目,那么一切都是好的。如果我将这两个项目拆分为在本地IIS中的单独应用程序池中运行,那么一切都是好的。但是,如果我在IIS中的同一个池中运行这两个应用程序,就会遇到许多问题。也就是说,当我调用HttpClient.GetAsync(url)时--特别是在调用这9次的页面上--根据ID动态检索不同的图像(每个调用都是对MVC应用程序进行调用,然后调用API)。有些电话打过去了,大多数打不通。

异常与取消的任务有关(超时值=100),但是操作只需要一小部分秒,所以不需要超时。执行甚至不会在API端失败时进入函数--就像HTTP客户机已经放弃提供更多的连接,或者任务正在等待HTTP发送请求,而它从来没有这样做过。

我试过让它一直都是异步的,尝试过使HttpClient静态,等等,但是没有joy。这仅仅是不应该做的事情吗?允许两个应用程序共享一个应用程序池吗?如果是这样的话,我可以接受。但如果我能做些什么来更有效地处理这件事,那将是非常有用的。如能提供有关这方面的任何资料/资源,将不胜感激。阿塔!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-31 10:54:59

我们最近遇到了同样的问题,经过了相当多的调试才发现,使用相同的applciation池是问题的原因。

我还发现,如果您在应用程序池的高级设置中增加了最大工作进程的数量,这也是可行的。

我不知道为什么会这样,但我猜所有的请求都是由一个进程处理的,这会导致积压,最终导致超时。(不过,我很高兴有一位更熟悉IIS的人来纠正我)

HTH

编辑:在进一步阅读Carmelo Pulvirenti博客时,似乎垃圾收集器应该受到指责。博客指出,运行在同一个池上的多个应用程序共享内存,副作用如下;

这意味着GC每秒运行大量时间,以便为应用程序提供干净的内存。副作用是什么?在服务器模式下,垃圾收集器需要停止所有线程活动来清理内存(这在.NET FX4.5上得到了改进,因为排序规则不需要停止所有线程)。副作用是什么?

  1. web应用程序性能缓慢
  2. 由于GC的活动,对CPU时间的影响很大。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43488585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档