您将使用什么方法来衡量软件服务器应用程序的负载能力?

What methodology would you use to measure the load capacity of a software server application?

我有一个高性能的软件服务器应用程序,预计在未来几个月内会增加流量。

我想知道可以使用哪种方法或方法论来衡量服务器是否仍有能力处理这种增加的负载?

使用 one-tenth 数据和流量测试产品。确保 activity 是 'realistic'.

然后考虑随着流量增长会发生什么 -- RAM、磁盘、cpu、网络等是否线性增长?

在这样做的同时,寻找“热点”。优化它们。

您会使用网页吗?数据库?等等。这些东西中的每一个都以不同的方式缩放。 (换句话说,你没有在问题中提供足够的细节。)

大多数固定基准测试都集中在计算的一个小方面;将结果应用于特定应用程序是不确定的。

我想你正在寻找 Stress Testing 并且场景应该是这样的:

  1. 创建模拟当前实际应用程序使用情况的负载测试

  2. 从当前用户数开始,逐渐增加负载,直到

    • you reach the "increased traffic" amount
    • or errors start occurring
    • or you start observing performance degradation

    先到先得

  3. 根据结果,您可以声明您的服务器可以毫无问题地处理增加的负载,或者您会想出 saturation point and the first bottleneck

  4. 您可能还想执行 Soak Test - leave the system under high prolonged load for several hours or days, this way you can detect memory leaks 或其他容量问题。

更多信息:Why ‘Normal’ Load Testing Isn’t Enough

我会首先收集关键资源的基线数据 - 通常是 CPU、内存使用情况、磁盘使用情况、网络使用情况 - 并随着时间的推移跟踪它们。如果这些资源中的任何一个显示出规律的峰值,即它们保持 100% 容量的时间超过几分之一秒,则在当前使用情况下,您在某处遇到了瓶颈。在这种情况下,您无法在没有可能中断的情况下接受额外负载。

接下来,我将开始找出您的应用程序的瓶颈资源是什么 - 它因应用程序而异,但在大多数情况下,它是阻止您进一步扩展的瓶颈资源。例如,您的 CPU 可能几乎处于空闲状态,但您正在对磁盘 I/O 进行抖动。这是一个棘手的过程 - 负载和压力测试是必经之路。

如果您可以通过购买更好的硬件来解决瓶颈,那就买吧 - 这比重写软件 便宜得多。如果您不能购买更好的硬件,请查看负载平衡。如果你不能负载平衡,你必须看看应用程序架构和实现,看看是否有办法移动瓶颈。

瓶颈从一种资源转移到另一种资源是很典型的 - 你已经 CPU 表现出来了,但现在当你增加流量时,你正在激增磁盘 I/O;解决该问题后,您可能会遇到另一个 CPU 挑战。