有没有人对如何编写需要保证响应时间的ASP.net应用程序有任何提示?
当处于通常会导致我们超过所需响应时间的高负载时,我们希望丢弃适当数量的请求,以便其余请求可以在最大响应时间之前返回。基于超过固定req / s的请求抛出是不可行的,因为还有其他外部因素可以控制响应时间,从而导致我们可以安全支持的最大rps随着时间的推移而大幅度地漂移和波动。
如果一些请求需要花费太长时间,那就没关系,但是我们希望它们中的绝大多数能够满足所需的响应时间窗口。我们希望“抛弃”最小或接近最小数量的请求,以便我们可以在分配的响应时间内处理其余请求。
它应该考虑ASP.Net排队时间,理想情况下是网络请求时间,但不太重要。
我们也喜欢做自适应工作,比如如果我们有足够的时间进行数据库调用,但如果我们的时间较短则进行一些计算。
谢谢!
答案 0 :(得分:2)
保证响应时间的SLA需要一些工作。
首先,您需要花费大量时间来分析您的应用程序。您想要准确了解它在各种负载情况下的行为:轻,中,重,破碎......在执行此分析步骤时,在完全相同的硬件/软件配置上完成它至关重要>该生产使用。来自一组硬件的结果与即使稍微不同的硬件组的结果无关。这不仅仅是服务器;我说的是路由器,交换机,电缆长度,硬盘(制造/型号),一切。甚至可以在机器,RAID控制器和循环中的任何其他设备上进行BIOS修订。
虽然分析确保工作负载类型代表您将看到的实际切片。显然,某些负载混合比其他负载混合更快。
我不完全确定你的意思是“扔出适当数量的请求”。听起来你想放弃这些请求......这在许多层面听起来都是错误的。这样做通常会导致SLA成为“中断”。
接下来,您将必须主动监控服务器的负载。如果负载水平在最大值的某个百分比范围内,那么您需要添加更多硬件来增加容量。
另一件事,内部监控结果时间只是其中的一部分。您还需要根据客户的位置从各个外部位置监控它们。
这就是你的申请。还有其他力量在起作用,例如您与Internet的连接。如果一个发生故障,您将需要多个具有活动故障转移功能的提供商...或者,如果可能,请使用可靠的云提供商。
答案 1 :(得分:0)
是的,在上一篇mvcConf中,其中一位发言者比较了ASP.NET MVC的各种视图引擎的性能。我认为这是史蒂芬史密斯的演讲,做了比较,但我不是百分百肯定。
但是,您必须记住,ASP.NET实际上只会在您的应用程序性能中扮演非常小的角色; DB可能是你最大的瓶颈。
希望视频有所帮助。