5

在当前部署的 Web 服务器中,其性能的典型限制是什么?

我相信一个有意义的答案是每秒 100、1,000、10,000、100,000 或 1,000,000 个请求中的一个,但今天这是真的吗?5年前哪个是真的?5年后我们可以期待什么?(即带宽、磁盘性能、CPU 性能等趋势如何影响答案)

如果它很重要,则应考虑 HTTP over TCP 是访问协议这一事实。操作系统、服务器语言和文件系统效果应该被认为是最好的。

假设磁盘包含许多静态服务的小型唯一文件。我打算消除内存缓存的影响,而 CPU 时间主要用于组装网络/协议信息。这些假设旨在将答案偏向“最坏情况”估计,其中请求需要一些带宽、一些 cpu 时间和磁盘访问。

我只是在寻找精确到一个数量级左右的东西。

4

9 回答 9

14

阅读http://www.kegel.com/c10k.html。您还可以阅读标记为 'c10k' 的 StackOverflow 问题。C10K 代表 10'000 个并发客户端。

长话短说——主要是,限制既不是带宽,也不是 CPU。是并发。

于 2009-03-11T16:29:28.460 回答
4

六年前,我看到一个 8 进程的 Windows Server 2003 机器每秒处理 100,000静态内容请求。那个盒子有 8 个千兆以太网卡,每个都在一个单独的子网上。限制因素是网络带宽。即使使用真正巨大的管道,您也无法通过 Internet 提供如此多的内容。

实际上,对于纯静态内容,即使是一个普通的盒子也会使网络连接饱和。

对于动态内容,没有简单的答案。可能是 CPU 利用率、磁盘 I/O、后端数据库延迟、工作线程不足、上下文切换过多……

您必须测量您的应用程序以找出瓶颈所在。它可能在框架中,也可能在您的应用程序逻辑中。它可能会随着您的工作量的变化而变化。

于 2009-03-16T06:38:46.493 回答
2

我认为这真的取决于你所服务的。

如果您正在为动态呈现 html 的 Web 应用程序提供服务,那么 CPU 是消耗最多的。

如果您多次提供相对较少的静态项目,您可能会遇到带宽问题(因为静态文件本身可能会发现自己在内存中)

如果您提供大量静态项目,您可能会首先遇到磁盘限制(查找和读取文件)

于 2009-03-11T16:30:18.940 回答
2

如果您无法将文件缓存在内存中,那么磁盘寻道时间可能会成为限制因素,并将您的性能限制在 1000 个请求/秒以下。使用固态磁盘时,这可能会有所改善。

于 2009-03-11T21:43:25.787 回答
2

每秒 100、1,000、10,000、100,000 或 1,000,000 次请求,但今天哪个是正确的?

该测试是在一台普通的 i3 笔记本电脑上完成的,但它审查了 Varnish、ATS(Apache Traffic Server)、Nginx、Lighttpd 等。

http://nbonvin.wordpress.com/2011/03/24/serving-small-static-files-which-server-to-use/

有趣的一点是,使用高端 8 核服务器对大多数服务器(Apache、Cherokee、Litespeed、Lighttpd、Nginx、G-WAN)的提升很小:

http://www.rootusers.com/web-server-performance-benchmark/

由于测试是在 localhost 上完成的,以避免将网络作为瓶颈,因此问题出在无法扩展的内核中 - 除非您调整其选项

因此,要回答您的问题,进度余量在于服务器处理 IO 的方式。他们将不得不使用更好的数据结构(无需等待)。

于 2011-08-04T19:35:59.050 回答
1

我认为这里有太多变量来回答你的问题。

什么处理器,什么速度,什么缓存,什么芯片组,什么磁盘接口,什么主轴速度,什么网卡,如何配置,列表是巨大的。我认为您需要从另一面解决问题...

“这就是我想做和实现的,我需要做什么?”

于 2009-03-11T16:29:11.767 回答
0

这将取决于您的 CPU 内核是什么 您的磁盘速度是多少 什么是“胖”“中等”大小的托管公司管道。什么是网络服务器?

问题太笼统

使用http://jmeter.apache.org/之类的工具部署您的服务器对其进行测试,然后看看您是如何进行的。

于 2009-03-11T16:29:46.367 回答
0

操作系统、服务器语言和文件系统效果是这里的变量。如果你把它们取出来,那么你就会得到一个无开销的 TCP 套接字。

在这一点上,这实际上不是服务器性能的问题,而是网络的问题。使用无开销 TCP 套接字,您将遇到的限制很可能是在防火墙或网络交换机上,可以同时处理多少个连接。

于 2009-03-11T16:30:03.247 回答
0

在任何使用数据库的 Web 应用程序中,您还开辟了一系列全新的优化需求。

索引、查询优化等

对于静态文件,您的应用程序是否将它们缓存在内存中?

等等等等等等

于 2009-03-11T17:22:10.937 回答