是否有可能为ASP.NET MVC路由提供比其他更多的服务器资源?

时间:2015-12-01 05:33:48

标签: c# asp.net asp.net-mvc iis-8 high-availability

我有一个C#ASP.NET MVC REST Web服务。 Web服务有两个主要路径/路由。一个用于管理员,一个用于用户。 用户通常是1-2个管理员用户,所有其他用户都是正常的。 当流量很大时,服务器响应缓慢。目前,这意味着管理员用户请求与普通用户一样慢。 我希望管理员用户请求(使用特定路由)具有最高优先级,以便管理员请求快速,就好像服务器上没有负载一样。考虑这个问题的一种方法是我想为管理员创建VIP访问权限。

我想到的一个选项就是创建另一个服务器,但是管理路由上的操作和用户路由上的操作之间存在一些依赖关系,因此需要编写额外的代码来进行服务器间通信,这反过来可能会产生新的瓶颈。

我认为这可以通过代码完成,可能是一个自定义请求队列,它可以通过创建一个单独的工作线程池来实现优先级,然后给它们高优先级,但是,这实际上是否有效 - 意味着给出了最高的5个工作线程的线程池优先级仍然优先于以默认优先级运行的主ASP.NET工作线程池?

理想的解决方案我正在寻找一种只需要配置,少量代码和新硬件的解决方案。这可能吗?

操作系统:Windows Server 2012 R2数据中心(iis8)。

关于现有瓶颈: 这主要是CPU绑定问题,我在运行负载测试时查看了性能计数器。它实际上只是一个超载的服务器情况,我想保护管理路由的性能,用户可以暂时受到影响,直到负载减少(这意味着我不想投资增加更多的容量)

1 个答案:

答案 0 :(得分:0)

我不熟悉在IIS服务器上优先处理Http请求。 正如您所提到的,最快的解决方案是使用另一台服务器。如果你使用相同的代码库和相同的数据库,你甚至不需要添加一行代码。

但也许你应该多研究一下你的问题并找到你的瓶颈,CPU,内存,数据库,Http请求......