企业高性能web服务器

Web****服务基础介绍

1 Apache 经典的 Web 服务端

  • Apache起初由美国的伊利诺伊大学香槟分校的国家超级计算机应用中心开发
  • 目前经历了两大版本分别是1.X和2.X
  • 其可以通过编译安装实现特定的功能

2.Apache prefork 模型

  • 预派生模式,有一个主控制进程,然后生成多个子进程,使用select模型,最大并发1024
  • 每个子进程有一个独立的线程响应用户请求
  • 相对比较占用内存,但是比较稳定,可以设置最大和最小进程数
  • 是最古老的一种模式,也是最稳定的模式,适用于访问量不是很大的场景

优点:稳定
缺点:每个用户请求需要对应开启一个进程 , 占用资源较多,并发性差 , 不适用于高并发场景。

Apache worker 模型

  • 一种多进程和多线程混合的模型
  • 有一个控制进程,启动多个子进程
  • 每个子进程里面包含固定的线程
  • 使用线程程来处理请求
  • 当线程不够使用的时候会再启动一个新的子进程,然后在进程里面再启动线程处理请求,
  • 由于其使用了线程处理请求,因此可以承受更高的并发

优点:相比 prefork 占用的内存较少,可以同时处理更多的请求
缺点:使用 keepalive 的长连接方式,某个线程会一直被占据,即使没有传输数据,也需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也会导致在高并发场景下的无服务线程可用(该问题在prefork模式下,同样会发生)

3 Apache event 模型
Apache 中最新的模式, 2012 年发布的 apache 2.4.X 系列正式支持 event 模型 , 属于事件驱动模型 (epoll)
每个进程响应多个请求,在现在版本里的已经是稳定可用的模式
它和 worker 模式很像,最大的区别在于,它解决了 keepalive 场景下长期被占用的线程的资源浪费问题 (某些线程因为被keepalive ,空挂在哪里等待,中间几乎没有请求过来,甚至等到超时) event MPM 中,会有一个专门的线程来管理这些 keepalive 类型的线程
当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。这样增强了高并发场
景下的请求处理能力
优点:单线程响应多请求,占据更少的内存,高并发下表现更优秀,会有一个专门的线程来管理 keep
alive 类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放
缺点:没有线程安全控制
Nginx- 高性能的 Web 服务端
Nginx 是由 1994 年毕业于俄罗斯国立莫斯科鲍曼科技大学的同学为俄罗斯 rambler.ru 公司开发的,开发工作最早从2002 年开始,第一次公开发布时间是 2004 年 10 月 4 日,版本号是 0.1.0
2019 年 3 月 11 日 F5 与 NGINX 达成协议 ,F5 将收购 NGINX 的所有已发行股票,总价值约为 6.7 亿美元。6.7亿美金约合 44.97 亿人民币 ,nginx 核心模块代码长度 198430 (包括空格、注释),所以一行代码约为2.2万人民币
官网地址 www.nginx.org
Nginx 历经十几年的迭代更新( https://nginx.org/en/CHANGES ), 目前功能已经非常完善且运行稳定,另外Nginx 的版本分为开发版、稳定版和过期版, nginx 以功能丰富著称,它即可以作为 http 服务器,也可以作为反向代理服务器或者邮件服务器能够快速的响应静态网页的请求
支持 FastCGI/SSL/Virtual Host/URL Rwrite /Gzip / HTTP Basic Auth/http 或者 TCP 的负载均衡 (1.9 版本以上且开启stream 模块 ) 等功能,并且支持第三方的功能扩展。
天猫 淘宝 京东 小米 163 新浪等一线互联网公司都在用 Nginx 或者进行二次开发
基于 Nginx 的工作场景:

用户访问体验和性能
1. 用户访问体验统计
互联网存在用户速度体验的 1-3-10 原则,即 1 秒最优, 1-3 秒较优, 3~10 秒比较慢, 10 秒以上用户无法接受。用户放弃一个产品的代价很低,只是换一个URL 而已。
全球最大搜索引擎 Google :慢 500ms = 20% 将放弃访问。
全球最大的电商零售网站亚马逊:慢 100ms = 1% 将放弃交易
有很多研究都表明,性能对用户的行为有很大的影响:
79% 的用户表示不太可能再次打开一个缓慢的网站
47% 的用户期望网页能在 2 秒钟以内加载
40% 的用户表示如果加载时间超过三秒钟,就会放弃这个网站
页面加载时间延迟一秒可能导致转换损失 7% ,页面浏览量减少 11%
8 秒定律:用户访问一个网站时,如果等待网页打开的时间超过 8 秒,会有超过 30% 的用户放弃等待
2 影响用户体验的因素
据说马云在刚开始创业在给客户演示时,打开一个网站花了不到四个小时。
3.影响用户体验的因素

  1. 客户端
    客户端硬件配置
    客户端网络速率
    客户端与服务端距离
  2. 服务器
    服务端网络速率
    服务端硬件配置
    服务端架构设计
    服务端应用程序工作模式
    服务端并发数量服务端响应文件大小及数量 buffer cache
    服务端 I/O 压力 1.2.4 服务端 I/O 流程
相关推荐
高梦轩36 分钟前
MySQL高可用
android·运维·数据库
孟章豪4 小时前
《SQL拼接 vs 参数化,为什么公司禁止拼接SQL?(附真实案例)》
服务器·数据库·sql
hsjcjh4 小时前
Nodemailer使用教程:在Node.js中发送电子邮件
linux·运维·node.js
没有梦想的咸鱼185-1037-16635 小时前
北斗高精度数据解算:破解城市峡谷/长基线/无网区难题,从毫米级定位到自动化交付——(GAMIT/GLOBK底层核心解算技术方法)
运维·arcgis·数据分析·自动化
不怕犯错,就怕不做5 小时前
linux 如何查看自己的帐号密码及samba的帐号和密码
linux·运维·服务器
实在智能RPA5 小时前
Agent 在物流行业能实现哪些自动化?——深度拆解 AI Agent 驱动的智慧物流新范式
运维·人工智能·ai·自动化
张3236 小时前
Linux 启动过程
linux·运维
李彦亮老师(本人)6 小时前
Rocky Linux 9.x 新特性详解
linux·运维·服务器·centos·rocky linux
NiKick6 小时前
在Linux系统上使用nmcli命令配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)
linux·服务器·网络