通过以上图,可以从三个方面来优化HTTP的性能。
1.服务器
衡量服务器性能的指标,主要有以下几个:
a.吞吐量(或TPS、RPS、QPS)
b.并发数
c.响应时间
d.资源利用率(CPU、内存、硬盘、网络)
-->提高吞吐量,吞吐量越高,服务器的性能越好!
-->提高并发数,支持的并发数越大,服务器的性能越好!
-->降低响应时间,响应时间越短,服务器的性能越好!
-->合理利用服务器资源,过高肯定是不行,过低也有可能是存在问题的!
-->Linux服务器的监控工具主要有top、sar、glances等
2.客户端
因为数据都要通过网络从服务器获取,所以它最基本的性能指标就是:延迟。
所谓的“延迟”其实就是“等待”,等待数据到达客户端时所花费的时间。
延迟的原因,有几点:
a.距离:由于地理距离导致的延迟,是无法客服的,比如访问数千公里外的网站。
b.带宽
c.DNS查询(如果域名在本地没有缓存的话)
d.TCP握手(必须要经过 SYN、SYN/ACK、ACK 三个包之后才能建立连接)
-->对于 HTTP 性能优化,有一个专门的测试网站:WebPageTest,或使用浏览器的开发者工具
-->一次 HTTP“请求 – 响应”的过程中延迟的时间是非常大的,有可能会占到90%以上
-->所以,客户端优化的关键,降低延迟
3.传输链路(客户端和服务器之间的传输链路)
使用CDN等技术,总之,要增加带宽,降低延迟,优化传输速度。
———————————————–具体的优化手段———————————————————-
主要是优化服务端的性能。
1.前端:可以利用PageSpeed等工具进行检测并根据提示进行优化。
2.后端:主要有以下几方面
a.硬件、软件或服务
比如更换强劲的CPU、内存、磁盘、带宽等,比如使用CDN
b.服务器选择、参数调优
选用高性能的服务器,比如Nginx,它强大的反向代理能力实现“动静分离”,动态页面交给Tomcat等,静态资源交给Nginx
另外,Nginx自身也有可以调优的参数,比如说禁用负载均衡锁、增大连接池,绑定 CPU 等
对于 HTTP 协议一定要启用长连接,因为TCP 和 SSL 建立新连接的成本非常高,可能会占到客户端总延迟的一半以上
TCP 的新特性“TCP Fast Open“,类似 TLS 的“False Start”,可以在初次握手的时候就传输数据,尽可能在操作系统和 Nginx 里开启这个特性,减少外网和内网里的握手延迟。
使用HTTP协议内置的“数据压缩”编码,可以选择标准的 gzip,也可以尝试新的压缩算法 br
不过在数据压缩的时候应当注意选择适当的压缩率,不是压缩的越厉害越好
c.缓存
网站系统内部,可以使用 Memcache、Redis等专门的缓存服务,把计算的中间结果和资源存储在内存或者硬盘里
Web 服务器首先检查缓存系统,如果有数据就立即返回给客户端
另外,CDN 的网络加速功能就是建立在缓存的基础之上的,可以这么说,如果没有缓存,那就没有 CDN。
利用好缓存功能的关键是理解它的工作原理,为每个资源都添加 ETag 和 Last-modified字段,再用 Cache-Control、Expires 设置好缓存控制属性。
其中最基本的是 max-age 有效期,标记资源可缓存的时间。对于图片、CSS 等静态资源可以设置较长的时间,比如一天或者
一个月,对于动态资源,除非是实时性非常高,也可以设置一个较短的时间,比如 1 秒或者 5 秒。这样一旦资源到达客户端,就
会被缓存起来,在有效期内都不会再向服务器发送请求。
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/190762.html