开发者社区> 朱小厮> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

如何提升网站的性能?

简介: 概述   性能是网站的一个重要指标,除非是没得选择(比如12306),否则用户无法忍受一个响应缓慢的网站。一个打开缓慢的网站会导致严重的用户流失,很多时候网站性能问题是网站架构升级优化的触发器。
+关注继续查看

概述

  性能是网站的一个重要指标,除非是没得选择(比如12306),否则用户无法忍受一个响应缓慢的网站。一个打开缓慢的网站会导致严重的用户流失,很多时候网站性能问题是网站架构升级优化的触发器。可以说性能是网站架构设计的一个重要方面,任何软件架构设计方案都必须考虑可能会带来的性能问题。
  也正是因为性能问题几乎无处不在,所以优化网站性能的手段也非常多,从用户浏览器到数据库,影响用户请求的所有环节都可以进行性能优化。
  在浏览器端,可以通过浏览器缓存、使用页面压缩、合理分布页面、减少Cookie传输等改善性能。
  还可以使用CDN,将网站静态内容分发至离用户最近的网络服务商机房,使用户通过最短访问路径获取数据。可以在网站机房部署反向代理服务器,缓存热点文件,加快请求响应速度,减轻应用服务器负载压力。(Nigix)
  在应用服务器端,可以使用服务器本地缓存和分布式缓存,通过缓存在内存中的热点数据处理用户请求,加快请求处理过程,减轻数据库负载压力。(Redis, Memecache, JBoss Cache, Ehcache)
  也可以通过异步操作将用户请求发送至消息队列等待后续任务处理,而当前请求直接返回给用户。(RabbitMq, Kafka)
  在网站有很多用户高并发请求的情况下,可以将多台应用服务器组成一个集群共同对外服务,提高整体处理能力,改善性能。
  在代码层面,也可以通过使用多线程、改善内存管理等手段优化性能。
  在数据库服务器端,索引、缓存、SQL优化等性能优化手段都已经比较成熟。而方兴未艾的NoSQL数据库通过优化数据模型、存储结构、伸缩特性等手段在性能方面的优势也日趋明显。(MongoDB, HBase)
  衡量网站性能有一系列指标,重要的有响应时间、TPS、系统性能计数器等,通过测试这些指标以确定系统设计是否达到目标。这些指标也是网站监控的重要参数,通过监控这些指标可以分析系统瓶颈,预测网站容量,并对异常指标进行报警,保障系统可用性。
  对于网站而言,性能符合预期仅仅是必要条件,因为无法预知网站可能会面临的访问压力,所以必须要考察系统在高并发访问情况下,超出负债设计能力的情况下可能会出现的性能问题。网站需要长时间持续运行,还必须保证系统在持久运行且访问压力不均匀的情况下保持稳定的性能特性。


性能测试指标

  1. 响应时间
  2. 并发数
  3. 吞吐量
  4. 性能计数器

性能测试方法

  性能测试是一个不断对系统增加访问压力,以获得系统性能指标、最大负载能力、最大压力承受能力的过程。
  性能测试方法:

  1. 性能测试: 以系统设计初期规划的性能指标为预期目标,对系统不断施加压力,验证系统在资源可接受范围内,是否能达到性能预期。
  2. 负载测试
    对系统不断地增加并发请求以增加系统压力,知道系统的某项或多项性能指标达到安全临界值,如某种资源已经呈饱和状态,这是继续对系统施加压力,系统的处理能力不但不提高,反而会下降。
  3. 压力测试 超过安全负载的情况下,对系统继续施加压力,知道系统崩溃或不能再处理请求,一次获得系统最大压力承受能力。
  4. 稳定性测试
    被测试系统在特定硬件、软件、网络环境条件下,给系统加载一定业务压力,使系统运行一段较长时间,以此检测系统是否稳定。在不同生成环境、不同时间点的请求压力是不均匀的,呈波浪特性,因此为了更好地模拟生产环境,稳定性测试也不应均与地对系统施加压力。

性能优化

  根据网站分层架构,性能优化可分为:web前端性能优化、应用服务器性能优化、存储服务器性能优化。

  1. web前端性能优化
    • 浏览器访问优化:减少http请求;使用浏览器缓存;启用压缩;css放在页面最上面、javaScript放在页面最下面;减少Cookie传输
    • CDN加速
    • 反向代理
  2. 应用服务器性能优化
    • 分布式缓存(Redis等)
    • 异步操作(消息队列)
    • 使用集群(负载均衡)
    • 代码优化
  3. 存储性能优化
    • 机械硬盘vs固态硬盘
    • B+树 vs LSM树
    • RAID vs HDFS

代码优化
- 多线程(Q:怎么确保线程安全?无锁机制有哪些?)
- 资源复用(单例模式,连接池,线程池)
- 数据结构
- 垃圾回收

多线程三大定律
1. Amdahl 定律
–Gene Amdahl 发现在计算机体系架构设计过程中,某个部件的优化对整个架构的优化和改善是有上限的。这个发现后来成为知名的Amdahl 定律。
比如:即使你有10个老婆,也不能一个月把孩子生下来。
2. Gustafson 定律
–Gustafson假设随着处理器个数的增加,并行与串行的计算总量也是可以增加的。Gustafson定律认为加速系数几乎跟处理器个数成正比,如果现实情况符合Gustafson定律的假设前提的话,那么软件的性能将可以随着处理个数的增加而增加。
比如:当你有10个老婆,就会要生更多的孩子。
3. Sun-Ni 定律
–充分利用存储空间等计算资源,尽量增大问题规模以产生更好/更精确的解。
比如:你要设法让每个老婆都在干活,别让她们闲着。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
当数据量增加时,如何提升数据库性能?
当数据量增加时,如何提升数据库性能?
90 0
如何提高网站的权重?提高网站权重的10个方法
SEO网站优化工作中,最重要的目的是提高网站的权重。一个网站的权重越高,那么搜索引擎给予网站的权威值越大。 网站权重的高低对排名的提升起到一定的作用,培养网站的权重从而提升关键词排名。 如何提高网站的权重?提高网站权重的10个方法
130 0
拒做背锅侠!如何利用网站性能优化驱动产品体验提升
对于运维工程师而言,如果要票选五大最抓狂运维支撑场景,花样繁多的各种促销活动一定榜上有名。每个促销季上线都是忐忑不安的不眠夜。大量内容更新、大量客户涌入,大量数据读写,虽有着各种技术方案或工具服务保障着大促顺利进行。但仍有可能收到譬如“商品图片加载不出来”、“页面打开缓慢”、“无法完成订单支付”等诸多各地用户投诉。这些由于用户体验与网站性能造成的用户转化低、业务增长缓慢等糟糕结果,最终都会让运维工程师成为“众望所归”的背锅侠。
591 0
网站知道
http://www.fffa.shop 雪羊论坛: http://www.fffa.shop 请问高手们,我论坛地载改装的是否非法,别人会知道吗??
736 0
如何自动备份网站数据和数据
网站的数据就是网站的灵魂,可是数据总是会因为各种原因,如服务器损坏,人员误操作而丢失 ,站长们最需要的就是能及时备份自己的数据。本文共享了一个由开发者自行撰写,将网站数据、服务器数据备份到OSS的教程 。
5002 0
+关注
朱小厮
主要从事消息中间件的相关研发工作,著有《RabbitMQ实战指南》。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
基于Web前端的可用性优化
立即下载
《更快更稳更安全》
立即下载
亿级 PV网站架构实战之性能压榨
立即下载