HTTP支持两种建立连接的方式:非持久连接和持久连接(HTTP 1.1默认的连接方式是持久连接)。
(4)。浏览器和Web服务器之间会完成以下7个步骤
建立 TCP 连接
Web 浏览器向 Web 服务器发送请求命令
Web浏览器发送请求头信息
Web 服务器回答
Web 服务器发送响应头信息
Web 服务器向浏览器发送数据
Web 服务器关闭 TCP 连接
一般情况下,web服务器一旦向浏览器发送请求数据,就会关闭TCP连接,但是浏览器通常会在其头部信息中加入这行代码:keep-alive,发送后TCP连接会保持打开状态,然后,浏览器可以继续通过同一连接发送请求。保持活动的目的节省了为每个请求建立新连接所需的时间,还节省了网络带宽。
3.并发连接数的计算方法
当用户在服务器上下载文件时服务器知识,就是一个连接,用户的文件下载完成后,连接就消失了。有时候如果用户在迅雷的多线程模式下下载,如果这个用户打开5个线程,甚至是5个连接。
当用户打开您的页面时,即使该用户停留在该页面上而没有向服务器发出任何请求,在该用户打开该页面后的 15 分钟内也将被计为在线。
在上述情况下,如果用户继续打开同一网站的其他页面,在线用户数按用户最后一次点击(发送请求)后的15分钟计算。.
当用户打开页面再正常关闭浏览器时,用户的在线号也会立即清零。
二、Web服务器提供服务的方式
由于Web服务器需要同时为多个客户端服务,它必须通过某种方式来支持这种多任务服务模式。一般来说,有三种方式可供选择:多进程模式、多线程模式和异步模式。其中,在多进程模式下,服务器需要使用一个进程向客户端提供服务。在操作系统中,生成一个进程需要额外的开销,例如进程内存复制,所以当客户端很多时性能会降低。为了克服生成进程的额外开销,可以使用多线程或异步方法。在多线程模式下,在进程中使用多个线程来提供服务,由于线程的开销较低,性能会有所提高。实际上,
虽然异步方法是最有效的,但它也有其自身的缺点。因为在异步模式下,多个任务之间的调度是由服务器程序自己完成的,一旦一个地方出现问题,整个服务器都会出现问题。因此,要给这种服务器添加功能,一方面要遵循服务器本身的具体任务调度方式,另一方面要保证代码没有错误,这就限制了服务器的功能并使异步Web服务器效率最高。,但具有简单的功能,如 Nginx 服务器。
由于多线程方式使用线程进行任务调度,服务器的开发变得简单,符合标准,便于多人协作。但是,多个线程位于同一个进程中,可以访问同一个内存空间,因此线程之间存在影响,必须分配和释放所请求的内存。对于一个服务器系统来说,由于需要连续运行几天、几个月甚至几年,一点点错误就会逐渐积累,最终影响服务器的正常运行,所以很难写出高稳定性的多线程服务器程序. 但是,当它不能完成时。该模块可以很好地支持多线程。
多进程模式的好处是稳定性,因为当一个进程退出时,操作系统会回收它所占用的资源,这样就不会留下任何垃圾。即使程序出现错误,由于进程相互隔离,错误不会累积,而是会随着进程退出而被清除。模块是支持多处理的模块。
3、多进程、多线程、异步模式比较
一般来说,Web服务器提供服务的方式有3种,多进程模式、多线程模式和异步模式。其中,效率最高的是异步方式,最稳定的是多进程方式,占用资源较少的是多线程方式。
1.多进程
在这种架构中,Web服务器生成多个进程并行处理多个用户请求,进程可以按需生成,也可以提前生成。一些Web服务器应用程序通过为每个用户请求生成一个单独的进程来响应,但是一旦并发请求的数量达到数千,多个同时的进程将消耗大量的系统资源。(即每个进程只能响应一个请求或多个进程对应多个请求)
优势:
最大的优点是稳定性,一个进程出错不会影响其他进程。例如,如果服务器同时连接 100 个请求,则有 100 个进程。如果一个进程失败,只会杀死一个进程,99个进程继续响应用户请求。每个进程响应一个请求
缺点:
进程数多,进程切换次数过多,导致CPU资源利用效率低。每个进程的地址空间是独立的,空间内重复数据较多,内存使用效率低,进程切换由内核完成,占用CPU资源。
2.多线程
在多线程模式下,每个线程响应一个请求。由于进程的数据在线程间共享,线程的开销小,性能会有所提升。
优势:
进程数据在线程之间共享,每个线程响应一个请求,线程切换是不可避免的(切换级别比较轻)。可以共享,写不能共享
缺点
快速线程切换会导致线程抖动,多线程会导致服务器不稳定
3.异步方式
一个进程或线程响应多个请求而没有任何额外的开销,具有最高的性能和最少的资源使用。但也有一个问题,一旦某个进程或线程出错,就会导致整个服务器宕机。