【发布时间】:2012-04-05 11:20:39
【问题描述】:
我正在编写一个高性能 ASP.NET Json API,很快 > 1000 请求/秒。我所有的逻辑和处理都是在一个 IHttpHandler 中完成的。我通过秒表类测量,处理程序在大约 0,1 - 0,5 毫秒内完成请求。
但似乎 IIS 和/或其他 HTTPHandlers(模块?)正在夺走很多性能。我能以某种方式测量吗?当配置为获得最佳性能时,请求在 IIS 中会产生多少开销?
删除所有这些 HTTPHandler 会有所帮助,还是有其他技巧可以加快速度?除了 Session 之外,我不需要太多 ASP.NET 功能集(如果它可以显着提升性能,甚至可以解决这个问题)。
【问题讨论】:
-
因为它是“本机”异步并且可以自托管(因此您可以避免在 IIS 中运行),看起来值得一看 ASP.NET Web API(内置到 MVC4,但也可以独立使用)。我从 Henrik 的博客 @blogs.msdn.com/b/henrikn 中学到了很多东西
-
FWIW,这个问题的措辞对我来说有点奇怪,因为它似乎混合了延迟/带宽(使用网络术语)。相对于有效和并发地服务它们的能力,服务特定请求的延迟似乎并不那么重要(在最终用户体验之外,但与可伸缩性正交)。 IOW,如果每个请求都需要 1000 毫秒来服务,但您一次可以服务 2000 个,那么您仍然可以接受,对吧?
-
不确定它将在多大程度上应用于您正在创建的 API,但如果有任何可缓存的内容,请确保这样做。如果您可以保持无状态,您可能会使用 ARR 并在需要时进行横向扩展。
标签: asp.net performance scalability httphandler