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

标签 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 Datacenter (iis8)。

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

最佳答案

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

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

关于c# - 是否可以为 ASP.NET MVC 路由提供比其他路由更多的服务器资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34013308/

相关文章:

c# - 将控件添加到上下文菜单

c# - 在调用 Read() 之前访问字段的尝试无效

c# - 让服务在 Azure 辅助角色内运行

javascript - 页面重新加载时可以显示加载标志吗?

c# - 基本 Controller 中的 Asp.Net MVC Outputcache 不工作

c# - 如果通过回发单击复选框则保留

.net - ASP.NET - 上传大文件时如何显示错误页面(超过最大请求长度)?

c# - URL 上缺少参数的 RedirectToAction 操作

jquery - 如何使用 knockout.js 将项目列表与 dropdownlist 绑定(bind)

c# - 获取母版页中的当前 Controller 和操作