当我们谈到web应用程序的容量时,我们经常提到它可以处理的并发请求。
正如我的another question所讨论的,以太网使用时分复用(Time Division Multiplexing),并且没有2个信号可以同时通过线路。因此,如果web服务器通过以太网连接到外部世界,就不会有任何并发请求。所有的请求都会一个接一个地进来。
但如果web服务器通过无线网卡之类的东西连接到外部世界,我相信多个信号可以通过电磁波同时到达。只有在这种情况下,才会有真正的并发请求需要讨论。
我说的对吗?
谢谢。
发布于 2011-02-16 22:13:34
我认为对web应用程序的“并发请求”不会深入到链接层。这更多的是一个由应用程序处理请求的问题,以及在处理过程中有多少请求到达。
例如,如果一个请求平均需要2秒才能完成(从web服务器接收到它,到通过应用程序处理它,再到发回响应),那么如果它每秒收到许多请求,那么它可能需要处理大量并发请求。
请求需要重叠并并发处理,否则请求队列将无限期地被填满。这可能看起来像是常识,但对于许多web应用程序来说,这是一个真正的问题,因为大量的请求可能会使应用程序的资源陷入困境,例如数据库。因此,如果应用程序的数据库交互性差(过于复杂的过程、糟糕的索引/优化、与许多其他应用程序共享的数据库的缓慢链接,等等)这就造成了一个瓶颈,它限制了应用程序可以处理的并发请求的数量,即使应用程序本身应该能够处理这些请求。
发布于 2017-09-20 13:47:34
.Imagining在端口80监听的http服务器,发生的情况是:
发布于 2011-02-16 22:10:02
确实,没有两个包可以同时到达(除非根据Gabe的评论正在使用多个网卡)。然而,web请求通常需要多个数据包。当多个请求几乎同时传入(无论是使用有线还是无线访问)时,这些包的到达是分散的。此外,这些请求的处理可能会重叠。
添加多线程(或多个处理器/核心),您可以看到从数据库读取(这需要大量等待响应)等冗长的操作很容易重叠,即使单个数据包以串行方式到达也是如此。
编辑:在上面添加了注释,以纳入加布的反馈。
https://stackoverflow.com/questions/5017392
复制相似问题