47

人们经常在他们的(与优化和性能相关的)问题和答案中谈论“重负载”。

我试图在典型服务器(以 SO 及其相当小的基础设施为例)上的常规 Web 应用程序的上下文中以每分钟的请求数来量化这一点,假设它们立即返回(以简化并提高数据库速度等不等式)。

我正在寻找一个标称数字/范围,而不是“CPU 最大化的地方”或类似的。粗略的近似值会很好(例如> 5000 / min)。谢谢!

4

5 回答 5

48

鉴于您不想要硬件负载测量(CPU、内存、IO 利用率),我认为对此的正确答案是,重负载是每个时间单位的请求数量等于或超过所需的最大数量每个时间单位的请求。

所需的最大请求数量是与客户或负责整个架构的任何人一起定义的。

假设 X 是应用程序所需的最大负载。我认为这样的事情会近似答案:

0 < 轻负载 < X/2 < 常规负载 < 2X/3 < 高负载 < X <= 重负载

凭空出现一个数字的事情是它与您的应用程序没有任何关系。什么是重负载完全,绝对,与应用程序应该做什么有着不可分割的联系。

尽管每秒 200 个请求是一个负载,会使小型网络服务器保持忙碌(每分钟约 12000 个)。

于 2009-08-24T00:40:47.917 回答
18

每秒数百个请求。

大多数服务器的开箱即用的打开连接数通常约为256或更少,因此256每秒请求数。您可以将其推送到2000-5000ping 请求或500-1000轻量级请求。让它更高是非常困难的,并且需要在网络、硬件、操作系统、服务器应用程序和用户应用程序中进行全方位的更改(参见问题 10k)。

HDD 的寻道速度 + 延迟约为 1-10 毫秒,SSD 则为0.1-1 ms. 所以,它是100-100 000IOPS。让我们100 000作为最高值(SSD 后续写入

通常连接保持打开状态至少1 x latency value毫秒。从客户端到服务器的延迟很少低于50-100 ms,因此只有100 000/50= 2000IOPS 才能创建新连接。

因此,2000来自不同客户端的每秒 ping 请求是普通服务器的基本上限。它可以通过使用 RAM 磁盘或添加更多 SSD 以增加 IOPS 数量、路由请求以减少 ping、更改/修改操作系统以减少内核开销等来改进。通常由于来自同一客户端(连接)的许多请求和客户数量有限。在良好的条件下,它可以达到数十万

另一方面,更高的 ping、应用程序执行时间、操作系统和硬件缺陷很容易将基值降低到每秒数百个请求。此外,典型的 Web 服务器和应用程序通常不太适合高级优化,因此 Vinko Vrsalovic 的建议200非常现实。

于 2016-02-05T13:29:24.257 回答
6

这不是一个可以用简单的请求/分钟数来回答的直截了当的问题。

在电信领域,我们经常做性能测试,我们模拟每秒运行大量的调用来尝试找出限制。我们不断提高呼叫率,直到服务器跟不上。

因此,这取决于您的服务器以及它可以处理的内容。这也取决于你的观点。例如,旧的 386 可能每分钟只能处理 50 个请求。我称之为轻负载。但是一个高规格的服务器可能能够处理 60000 个请求/分钟。这只是猜测。我不知道 Apache 是否可以做到这一点。我们的电信软件当然可以。

我认为最好从服务器的角度来回答这个问题。我会说非常重的负载是指您的服务器在几分钟或几十分钟内能够处理的负载的 10% 以内。重载15%以内。

于 2009-08-24T00:55:57.767 回答
4

这很难回答,因为负载不仅仅是每单位时间的请求问题。这取决于这些请求在做什么以及它们是如何实现的。

例如,读多于写可能意味着更轻的负载。

写入的异步处理可能意味着比必须等待同步处理完成更轻的负载。

一个极端是股票交易系统,每个交易日处理数十亿笔交易。查看纽约证券交易所或纳斯达克的典型交易量,并使用它来估计每分钟的高价值。

假设一个交易日的 2B 交易代表纳斯达克。市场在上午 9 点开盘,下午 4 点收盘,因此 7 小时 * 3600 秒/小时 = 25200 秒。这将产生平均 2B 事务/25200 秒 = 每秒 79,365 个事务 - 确实是非常高的负载。他们显然使用了很多服务器,所以你需要这个数字来确定每台服务器的负载应该是多少。

如果 SO 可以被认为是一个很好的基准,您可能会询问它在 meta 上的数量。

于 2009-08-24T00:29:34.513 回答
2

重负载是大于要求中规定的负载。您需要知道如何使用您的应用程序来确定可能构成重负载的内容。否则,您最终可能会建造一辆仅用于购买杂货的法拉利。很棒的经验,但浪费资源。

于 2018-12-19T11:20:35.580 回答