我正在使用ab来加载testing我的服务器。 当我从1增加并发数时,请求每秒。 往上。 我也看到每个请求的时间(平均)上升,而每个请求的时间(平均所有并发线程)下降。 但是,一旦并发数超过一定数量,请求每秒。 保持不变,每个请求的时间(mean)随并发数而线性上升,而每个请求的时间(所有并发线程的平均值)保持不变。
我如何解释这个结果? 每个请求的延迟是否在增加? 为什么每秒请求数保持不变? 这是否意味着服务器排队请求,并以恒定的速度连续服务? ab是通过查看总时间,并发线程数和请求总数简单地计算每个请求的时间?
这听起来就像你的服务器已经达到了每秒请求的最大请求和每个请求的时间(实际上相互颠倒)。
假设这些数字是每秒最多100个请求。
如果你的并发是200个请求,那么这意味着在4秒之后,你将有200个请求。 服务器每秒只响应100个请求,每次响应之后,客户端发出一个新的请求(使机上总数回到200)。 这意味着每个请求将花费2秒(大致上/平均)来获得响应,因为服务器本质上得到100个实际上可以工作的100个请求的积压。
如果将并发性提高到400,则不会更改服务器可以处理的每秒请求数,但是会将积压的大小(更改为300)更改每个给定请求所需的时间(4秒) 。 你每秒还能得到100个回应。 他们只是为了4秒的请求。
如果你继续向上,在某些时候,你会到达服务器无法维持积压的时间点。 在这一点上,你可能会开始看到一些失败的请求。 你所拥有的工具可能无法达到目标。