一个HTTP请求从发起到返回结果都经历那些事情

输入www.baidu.com

1 客户端
浏览器先对地址格式化:http://www.baidu.com/

然后浏览器会查询本地host文件寻找对应的ip

接着就是查找dns服务器寻找对应的ip

找到ip之后开始建立tcp链接

接着是发送请求命令

发送请求头

然后是服务端应答

服务端发送应答头信息

服务端向浏览器发送数据

服务端关闭tcp链接

2 服务端
其中服务端应答过程如下(服务端以nginx+php-fpm+mysql为例)

nginx启动manger进程
a、接收来自外界的信号
b、向worker发送信号
c、监控worker进程的运行状态
d、管理worker进程

然后启动worker进程
所有的worker进程监听同一个socket
当有请求到来时worker进程的socket read事件变为可读,然后开始抢互斥锁,抢到的对请求进行处理(惊群:nginx的处理是当worker的过载时(过载:负载达到最大值的7/8)就不再去争抢)

然后进行url rewrite
请求php-fpm
php-fpm服务器也会启动一个manger进程、多个worker进程
不同的是php-fpm会接收nginx发送过来的请求,然后分配给worker进程处理(避免惊群)

然后php-fpm会去调用php程序
php-fpm使用的fastcgi协议,进程会对php常驻内存的处理

3 php程序
接收参数->处理业务逻辑->查询缓存->查询数据库->返回结果
其中数据库查询过程:sql->查询缓存->语法解析->语法树->查询优化->执行计划->存储引擎api->数据整理->返回结果

转载请注明:小Y » 一个HTTP请求从发起到返回结果都经历那些事情

赞 (0) 评论 (0) 分享 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址