网站同时有多少在线用户。 CPU/memory/brandwidth

How many live users at the same time on website. CPU/memory/brandwidth

(假设场景)

我将托管一个非常简单的静态单页 html 网站。 它只会有一个类似于 "Hello world" 的简单文本和一个重定向到另一个网站的按钮 (~2kb)。

"hello world" 网站将从我的计算机 node.js 托管。 我的问题是.. 可以处理多少 "live" 用户。意思是那些只是坐在网站上每 30 秒刷新一次的人。假设约有 30000 人刷新。这意味着该网站每秒将刷新约 1000 次。此过程将在约 3 小时内激活。 什么因素在这里负责? 我的CPU?内存?带宽?

(假设设置)

与顶级路由器的 100/10mb 稳定光纤连接。

16GB 内存。

i7-2600k 3.4GHz。

让我们计算一下:
1000 refreshes/second * 2kByte = 2MByte/秒 => 16MBit/秒 + 请求的一点开销 => ~ 20MBit

因此您的 10MBit 连接会有点太慢,但在这种情况下 100MBit 就足够了。

如果您只有一个静态页面,我认为 RAM 或 CPU 电源不会成为问题。

但我应该补充一点,我真的没有这方面的经验。

这完全取决于您的 Hello World 应用程序在做什么。如果它正在为您的用户求解微分方程,它将使用很多 CPU。如果它用作流媒体电影服务器,带宽和内存使用量将很大。下面的 hello world 应用程序在具有 ~2GB 内存的双核 VM 上使用 Apache 基准测试程序进行了测试,以大致了解人们可能期望的结果。

var http = require('http');

http.createServer(function(req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write('<p>Hello World</p>');
  res.end();
}).listen(8080);

如您所见,这个程序非常基础,运行没有框架也没有逻辑。其中任何一个都会显着改变这些结果。 -n 参数是测试中的总请求数,-c 参数显示每秒的请求数。

ab -n 30000 -c 1000 <URL>

请注意,文档长度为 18 个字节。那里的任何增加都会线性扩展您的带宽(因此,如果您有一个 1kB html 文件,您将看到大约 1kB * 1000/sec = ~8mbps 带宽,大约是上游 link 的 80% ).为此,缓存非常重要。在每秒处理 1000 个请求时,节点使用了 CPU 的 99%(因为 1000 个并发连接可能使它的响应能力饱和,因此它总是有事情要做)。然而,node 的一个好处是它使用相对较少的内存来实现高并发,因此它徘徊在 2GB 可用内存的 3% 左右。

Document Path:          /
Document Length:        18 bytes

Concurrency Level:      1000
Time taken for tests:   5.355 seconds
Complete requests:      30000
Failed requests:        0
Total transferred:      3540000 bytes
HTML transferred:       540000 bytes
Requests per second:    5602.75 [#/sec] (mean)
Time per request:       178.484 [ms] (mean)
Time per request:       0.178 [ms] (mean, across all concurrent requests)
Transfer rate:          645.63 [Kbytes/sec] received

希望这对您设计应用程序有所帮​​助!