HTTP的性能优化

通过以上图,可以从三个方面来优化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 里开启这个特性,减少外网和内网里的握手延迟。

下面这个Nginx 配置,启用了长连接等优化参数,实现了动静分离

server {
  listen 80 deferred reuseport backlog=4096 fastopen=1024; 


  keepalive_timeout  60;
  keepalive_requests 10000;
  
  location ~* \.(png)$ {
    root /var/images/png/;
  }
  
  location ~* \.(php)$ {
    proxy_pass http://php_back_end;
  }
}
 

使用HTTP协议内置的“数据压缩”编码,可以选择标准的 gzip,也可以尝试新的压缩算法 br

不过在数据压缩的时候应当注意选择适当的压缩率,不是压缩的越厉害越好

c.缓存

网站系统内部,可以使用 Memcache、Redis等专门的缓存服务,把计算的中间结果和资源存储在内存或者硬盘里

Web 服务器首先检查缓存系统,如果有数据就立即返回给客户端

另外,CDN 的网络加速功能就是建立在缓存的基础之上的,可以这么说,如果没有缓存,那就没有 CDN。

利用好缓存功能的关键是理解它的工作原理,为每个资源都添加 ETag 和 Last-modified字段,再用 Cache-Control、Expires 设置好缓存控制属性。

其中最基本的是 max-age 有效期,标记资源可缓存的时间。对于图片、CSS 等静态资源可以设置较长的时间,比如一天或者

一个月,对于动态资源,除非是实时性非常高,也可以设置一个较短的时间,比如 1 秒或者 5 秒。这样一旦资源到达客户端,就

会被缓存起来,在有效期内都不会再向服务器发送请求。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值