假设平均服务时间已知,Web服务器可以服务的最大并发请求数

时间:2013-03-31 14:53:13

标签: performance webserver

说:“如果请求的平均服务时间为X且请求的可承受等待时间为Y,那么服务的并发请求的最大数量将为Y / X”这是合乎逻辑的吗?

我认为我要问的是,如果有任何隐藏因素我没有考虑到这一点!?

3 个答案:

答案 0 :(得分:2)

大致上是的,但是您的服务提供商(在您的情况下是网络服务器)能够并行处理多个请求,因此您应该考虑到这一点。我假设您测量了端到端服务时间,并且还没有按并行流的数量对其进行平均。你没有也无法实际衡量的另一件事是你网站的延迟。

您要前进的是Erlang单元(不是使用相同名称的语言),用于描述系统可以承受多少负载。 Erlangs是无单元的(它只是一个数字)并且起源于旧学校电话POTS,在那里它用于描述每个时间段以低阻塞概率处理X个呼叫需要多少线路。超越erlang是engset,它更多地用于高容量系统,例如移动系统。

它还用于向实时计算机系统和数据库提供昂贵的顾问报告,以描述可能发生性能下降的点。维基百科有一篇关于这个http://en.wikipedia.org/wiki/Erlang_(unit)的文章,“固定和移动电信,网络系统和服务”这本书在性能分析方面有很好的篇章。

虽然针对的是电话系统,但只需使用word webserver替换它,它的行为相同。网络服务器是相同的概念,提供的负载以随机间隔到达具有有限并行容量的系统。在您的情况下,您可以使用加载工具计算总负载比并行容量更容易,然后返回计算公式。这样做是为了获得对整个系统模型的信心。

当你有一个随机到达的并行流加载(即网络请求)和一个只能平均或估计的服务时间(即它在现实生活中变化)时,Erlang / engsetformulas非常有用。然后,您可以计算阻塞概率,即新请求在服务当前请求时需要等待的概率,以及等待的时间。它还有助于分析您是否需要并行处理更多请求,或者更快地完成每个请求(#lang中的#lines和保持时间说话)

接下来你可能会考虑排队系统分析,因为一旦请求阻塞(队列),模型就会稍微改变。

答案 1 :(得分:2)

如果您正在谈论网络服务器,那么不,您的公式不起作用,因为网络服务器旨在使用forking or threading处理多个同时请求。

这使公式变得更难以量化 - 根据我的经验,Web服务器可以处理LOTS(即数百或数千)并发请求,这些请求消耗很少或没有时间,但往往会因请求而大大减少并发性消耗更多时间。

这意味着“平均服务时间”并不是非常有用 - 它可以隐藏广泛的变化,而实际上是影响您的异常值。

答案 2 :(得分:1)

未考虑许多因素

  • 内存限制
  • 数据锁定约束,例如想要更新相同数据的人
  • 应用程序延迟
  • 缓存机制
  • 不同的用户将在网站上执行不同的任务并添加不同的负载

尽管如此,粗略估计的一个简单方法是使用apache ab工具(apache benchmark)

示例,一次获得1000次主页,包含100个请求:

  ab -c 100 -n 1000 http://www.example.com/