访问流程

当你在浏览器敲下一行网址:http://www.xxx.com/index.php,回车的时候,发生了什么?

                            1.键盘产生了一个电平信号,产生一个 CPU 中断

                            2.CPU 执行 OS 提供的键盘驱动程序读取键盘输入的字符

                            3.OS 发送键盘字符消息给浏览器程序

                            4.浏览器程序会获取网址输入框的内容,分析格式,如果是网址,则查询本机 DNS 缓存,如果没有命中则根据 OS 里面的 DNS SERVER 设置去查询域名的 A 记录对应的IP。

                            5.发送 HTTP GET 请求到服务器 IP ,如果没有指定端口,则默认请求 80 端口。

                            6.服务端收到请求后,判断请求的格式,如果是 .php 格式的,则根据 FASTCGI 协议,请求 PHP 进程监听的端口,如果是静态文件,则直接从硬盘读出(一般会缓存起来)。

                            7.PHP 进程在收到前端 nginx 请求的时候,有可能去请求 mysql 服务器,所以在 mysql 眼中,php 是前端。前端后端是相对的概念。

                            8.mysql 会分析 PHP 递送过来的 SQL 语句,去决定如何读取数据,是读索引还是表数据、缓存取决于很多因素:表结构,索引列和顺序,表的记录函数等等。

                            9.mysql 返回数据给 PHP,PHP 继续分析和执行脚本,这里开启了APC,则类似于 JVM 虚拟机,执行 PHP OPCODE

                            10.php 根据 FASTCGI 协议返回给 nginx

                            11.nginx 返回数据服务器 OS

                            12.服务器 OS 将返回的数据通过网卡发送给路由器

                            13.路由器根据路由表一站一站的转发到客户端的网卡手中

                            14.客户端网卡在收到数据后产生 CPU 中断,OS 调用网卡驱动程序读取数据,交给浏览器

                            15.浏览器根据返回的数据,如果资源都准备完毕,就立刻渲染。如果还缺少就继续请求,或者渲染一截出来。

                           

                   以上每一个环节都有可能导致性能问题,但是常见的性能问题:

                            1.大网之间的延迟:

                                     电信和联通

                                     国内和国外

                                     偏远地区到核心骨干

                            2.域名解析延迟:

                                     如果 ns server 放在国外,那么在第一次解析的时候肯定会有慢一点,但是还好有 DNS 有缓存,一般可以忽略

                            3.硬件资源:

                                     CPU颗数、频率

                                     内存大小、外频

                                     硬盘读写速度、接口、SATA

                            4.软件优化:

                                     Linux优化

                                     nginx优化

                                     php优化

                                     mysql优化

                            5.系统架构:

                                     资源动静分离,CDN

                                     MYSQL主从,读写分离

                            6.程序:

                                     网络IO,磁盘IO相关函数的调用优化

                                     MySQL索引优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值