首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >服务器响应是否在并行请求上变成串行响应?

服务器响应是否在并行请求上变成串行响应?
EN

Server Fault用户
提问于 2013-08-27 08:20:50
回答 1查看 1.2K关注 0票数 0

让我们拥有一个由Nginx提供的web应用程序,它可以收听端口80

当两个或多个用户试图访问该应用程序的某个URL时,这个响应会花费大量时间。例如,十个用户试图在/give_me_some_charts页面和服务器响应100秒内加载单用户请求。

每个用户都试图通过端口80访问应用程序。我相信服务器(在我们的示例中是Nginx)会阻塞该端口,直到发送响应为止。因此,处理10个用户应采用10 users * 100 seconds == 1000 seconds

但是在Nginx中有一些特性叫做平衡。现在我不确定服务器是如何处理并行请求的。

那么,服务器如何处理并行请求及其响应方式呢?Nginx的平衡功能是什么?

EN

回答 1

Server Fault用户

发布于 2013-08-27 09:03:16

我对nginx还不太确定(还没有理由使用它),但是几乎所有服务器都提供类似于下面的端口功能的服务:

  • 侦听器进程打开端口并等待连接。
  • 一旦建立了新的连接,该连接(套接字)就会被传递给另一个进程或线程。
  • “主”进程返回到等待另一个连接。

在完成当前连接之前,服务器不会阻止所有进一步的连接。如果是这样的话,即使是稍微繁忙的网站也会变得无法使用。上面概述的代码块通常尽可能紧凑(小),因此它完成得越快越好。一些生成新进程的服务器(如Apache)也会保留空闲的“子”进程,这样在客户端连接时它们就不必执行缓慢的fork系统调用了。

这允许同时连接多个(数十个、数百个甚至数千个)客户端。如果10个用户连接到您的网站,那么具有10个单独线程或进程同时为这些客户端服务的web服务器。所有请求是否在100秒内完成,还是花费更长时间,主要取决于代码正在做什么。(无论他们是在争取CPU时间、阻止文件系统或数据库调用等等)

快速的网络搜索表明,nginx的“平衡”功能可能与它向后端服务器代理请求的能力有关(将其用作负载均衡器),而不是它同时处理多个客户端的能力。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/534044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档