我们有一个由两个组件组成的产品。在IIS 8下托管的WEB API站点,我称之为API。该站点为多个站点提供服务,但目前只有一个站点正在使用它。该站点的另一个组件是ASP.NET MVC(.NET 4)站点,该站点目前是API站点的唯一客户端。我们称之为WEB。
当我们将API和WEB部署到具有生产能力的单个服务器时,一切都很好,直到并发用户数超过16个!然后该网站变得没有响应,这意味着我们没有收到超时(或任何其他)错误,浏览器正在等待响应。
我们使用在线负载测试网站在我们的临时环境中重现了同样的问题。当并发用户数超过12或16(或更高)时,网站再次无响应。
当发生这种情况时,网站会在10分钟内死亡,然后变得敏感。我想这是因为App Poll被回收了吗?
问题是我如何知道问题是存在于API还是存在于WEB中?那可能是什么问题呢? WEB完全依赖于API,并且不直接连接到任何数据库,但API在AWS上使用MySql。
答案 0 :(得分:0)
你看过你吃掉所有资源的东西了吗?内存最大化了吗?处理器最大化?你的瓶颈在哪里? 16个用户不应该以任何方式占用应用程序池中的所有线程。我猜想有些进程会占用你服务器上的所有内存,使其无法响应。了解Process Explorer或监视服务器资源的任何程序的流程。
答案 1 :(得分:0)
您是否尝试在IIS中向appools添加更多工作进程? 我们通过简单地添加更多工作进程来修复MVC站点的一些性能问题。
答案 2 :(得分:0)
正如一些用户在此指出的那样,问题是线程耗尽(又称线程争用)。我们试图识别并修改任何可能阻塞线程的代码。我们还对API和站点级别进行了大量性能改进,以帮助线程快速完成。最后,我们将站点部署到生产环境并获得了可接受的性能。