如何提升网站的性能?

概述

  性能是网站的一个重要指标,除非是没得选择(比如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 定律
–充分利用存储空间等计算资源,尽量增大问题规模以产生更好/更精确的解。
比如:你要设法让每个老婆都在干活,别让她们闲着。

时间: 2025-01-20 14:17:42

如何提升网站的性能?的相关文章

DNS 负载均衡:如何提升网站性能

如果你想提高你的网站或Web应用程序的访问速度,DNS负载均衡或许可以帮助你实现这一目标.通过帮助你分散收到的流量,有助于使网站以最佳的速度运行. 什么是DNS负载均衡? DNS负载均衡是一种用来帮助将对某个域的请求分配在不同机器上的技术,这样就不需要使用某个单一机器来承载全部负载.这种方法有助于提高网站和(或)Web应用程序的性能,因为流量负载可以在众多的服务器上共享,而不是由一个单一机器承担. DNS表示域名系统.它是用来把一个域名,如Google.com,翻译成一个特定服务器的IP地址,如

帮你提升jQuery的性能 的七件事

 这篇文章主要介绍了做好七件事帮你提升jQuery的性能的相关资料,需要的朋友可以参考下 1. Append Outside of Loops   凡是触及到DOM都是有代价的.如果你向DOM当中附加大量的元素,你会想一次性将它们全部附加进来,而不是分多次进行.当在循环当中附加元素就会产生一个常见的问题.    代码如下: $.each( myArray, function( i, item ) {     var newListItem = "<li>" + item +

全方位提升网站打开速度:前端、后端、新的技术

本文讲的是全方位提升网站打开速度:前端.后端.新的技术, 这里是 我们 充分利用对于网络缓存和 NoSQL 系统的研究,做出一个可以容纳几十万通过电视宣传慕名而来的访问者的网上商城 的故事,以及我们从中学到的一切. "Shark Tank"(美国),"Dragons' Den"(英国)或" Die Höhle der Löwen(DHDL)"(德国)等电视节目为年轻初创公司供了一次在众多观众前向商业大亨推销自己产品的机会.然而,主要的好处往往不在

分享20个提升网站界面体验的jQuery插件_jquery

jQuery到目前为止还是非常流行,很多用户喜欢使用jQuery插件加进自己的网站上提升界面及交互性能,这是好的,但我发现很多网站使用的插件还是比较旧,而这点就不太好了,是应该要换换"新款"啦! 随便Web技术不停的进步,很多新鲜.创新并且实用的jQuery插件已经开发出来,大家应该多点关注这方面的资讯. 今天为大家整理20个提升网站界面的体验的jQuery插件,这些都是比较"新款"的代码,喜欢的请用到你的网站项目上吧! Card 友好的信用卡表单插件,模拟真实的信

如何优化网站服务器提升网站访问速度

中介交易 SEO诊断 淘宝客 云主机 技术大厅 网站运营的任何时期,网站访问速度都是至关重要的部分,它是网站友好体验中最基本的一项,如果访问体验都令人不满意,那么后期所做的营销推广模式都有可能徒劳无功,因为网络中客户的选择成本很低,加上普遍客户的耐心都不高,页面访问超过6秒客户就会选择离开,这对于一些流量本来就不高的企业网站来说无疑是雪上加霜.网站访问速度既然如此重要,今天笔者也要跟大家分享几个关于提升速度体验的方法,虽然网上有很多类似的文章和观点,但是大多数都是网站内部去解析,今天笔者要从服务

提升jQuery的性能需要做好七件事_jquery

做好七件事帮你提升jQuery的性能,想知道哪几件事情吗? 1. Append Outside of Loops 凡是触及到DOM都是有代价的.如果你向DOM当中附加大量的元素,你会想一次性将它们全部附加进来,而不是分多次进行.当在循环当中附加元素就会产生一个常见的问题. $.each( myArray, function( i, item ) { var newListItem = "<li>" + item + "</li>"; $( &

提升网站抗并发压力的必备招数

背景: 自从本人花了4天4夜写出了:分布式网站负载压力测试工具 之后,每天都会有一些使用者通过我的在线QQ状态Q我:问我一点提升网站性能的事. 他们通常有不错的独立服务器,然而仅几十个或几百个并发链接,他们服务器就挂了. 对于这么简单就挂的,通常就是编码者入行不久,而使用DBHelper多数没关注链接关闭问题,或者多数使用查询出DataReader绑定了列表控件引发的. 简单点说就是数据库操作这块不当,造成的,当然建议就是让对方一行一行去查没关闭的链接等情况了,附带的建议就是让对方考虑使用CYQ

[转载]实战经验:IIS网站服务器性能优化攻略

原文出处[搜狐IT]:http://it.sohu.com/20090413/n263359097.shtml Windows Server自带的互联网信息服务器(Internet Information Server,IIS)是架设网站服务器的常用工具,它是一个既简单而又麻烦的东西,新手都可以使用IIS架设一个像模像样的Web站点来,但配置.优化 IIS的性能,使得网站访问性能达到最优状态却不是一件简单的事情,这里我就介绍一下如何一步一步的优化你的IIS服务器.     服务器端环境,我们以W

从细节入手 提升网站访问速度亦可另辟蹊径

中介交易 SEO诊断 淘宝客 云主机 技术大厅 尽管中国电信信誓旦旦的宣称,随着城市光网工程的启动,中国的带宽质量已经或者即将产生质的飞跃.但是,现实似乎并未有很大改观,而前不久发布的统计数据显示,中国带宽平均下行速率为245KB/S,落后于邻邦韩国.日本等将近9倍.不知道如此网速是否阻碍了中国互联网,或者依赖网络等软件产业发展,但是对于网站建设行业的影响是毋庸置疑的.至少,我们在网站设计的时候,不能随心所欲的使用大幅动画.视频以及特效.甚至一些容积稍大的图片,加载就会出现问题,而不得已将图片大