怎样提升站点的性能?

概述

??性能是站点的一个重要指标,除非是没得选择(比方12306)。否则用户无法忍受一个响应缓慢的站点。

一个打开缓慢的站点会导致严重的用户流失,非常多时候站点性能问题是站点架构升级优化的触发器。能够说性能是站点架构设计的一个重要方面。不论什么软件架构设计方案都必须考虑可能会带来的性能问题。

??也正是由于性能问题差点儿无处不在,所以优化站点性能的手段也非常多。从用户浏览器到数据库。影响用户请求的全部环节都能够进行性能优化。

??在浏览器端,能够通过浏览器缓存、使用页面压缩、合理分布页面、降低Cookie传输等改善性能。

??还能够使用CDN,将站点静态内容分发至离用户近期的网络服务商机房,使用户通过最短訪问路径获取数据。

能够在站点机房部署反向代理server。缓存热点文件。加快请求响应速度。减轻应用server负载压力。

(Nigix)

??在应用server端,能够使用server本地缓存和分布式缓存,通过缓存在内存中的热点数据处理用户请求,加快请求处理过程。减轻数据库负载压力。

(Redis, Memecache, JBoss Cache, Ehcache)

??也能够通过异步操作将用户请求发送至消息队列等待兴许任务处理,而当前请求直接返回给用户。

(RabbitMq, Kafka)

??在站点有非常多用户高并发请求的情况下,能够将多台应用server组成一个集群共同对外服务,提高总体处理能力。改善性能。

??在代码层面,也能够通过使用多线程、改善内存管理等手段优化性能。

??在数据库server端。索引、缓存、SQL优化等性能优化手段都已经比較成熟。而方兴未艾的NoSQL数据库通过优化数据模型、存储结构、伸缩特性等手段在性能方面的优势也日趋明显。(MongoDB, HBase)

??衡量站点性能有一系列指标,重要的有响应时间、TPS、系统性能计数器等,通过測试这些指标以确定系统设计是否达到目标。这些指标也是站点监控的重要參数,通过监控这些指标能够分析系统瓶颈,预測站点容量。并对异常指标进行报警。保障系统可用性。

??对于站点而言,性能符合预期不过必要条件,由于无法预知站点可能会面临的訪问压力,所以必需要考察系统在高并发訪问情况下,超出负债设计能力的情况下可能会出现的性能问题。站点需要长时间持续执行,还必须保证系统在持久执行且訪问压力不均匀的情况下保持稳定的性能特性。


性能測试指标

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

性能測试方法

??性能測试是一个不断对系统添加訪问压力,以获得系统性能指标、最大负载能力、最大压力承受能力的过程。

??性能測试方法:

  1. 性能測试: 以系统设计初期规划的性能指标为预期目标,对系统不断施加压力。验证系统在资源可接受范围内,能否达到性能预期。
  2. 负载測试

    对系统不断地添加并发请求以添加系统压力,知道系统的某项或多项性能指标达到安全临界值。如某种资源已经呈饱和状态,这是继续对系统施加压力,系统的处理能力不但不提高,反而会下降。

  3. 压力測试 超过安全负载的情况下。对系统继续施加压力,知道系统崩溃或不能再处理请求,一次获得系统最大压力承受能力。

  4. 稳定性測试

    被測试系统在特定硬件、软件、网络环境条件下。给系统载入一定业务压力,使系统执行一段较长时间,以此检測系统是否稳定。在不同生成环境、不同一时候间点的请求压力是不均匀的,呈波浪特性。因此为了更好地模拟生产环境,稳定性測试也不应均与地对系统施加压力。


性能优化

??依据站点分层架构,性能优化可分为:web前端性能优化、应用server性能优化、存储server性能优化。

  1. web前端性能优化

    • 浏览器訪问优化:降低http请求;使用浏览器缓存;启用压缩;css放在页面最上面、javaScript放在页面最以下;降低Cookie传输
    • CDN加速
    • 反向代理
  2. 应用server性能优化
    • 分布式缓存(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 定律

–充分利用存储空间等计算资源,尽量增大问题规模以产生更好/更精确的解。

比方:你要设法让每一个老婆都在干活,别让她们闲着。

时间: 2024-10-11 05:24:04

怎样提升站点的性能?的相关文章

应用 memcached 提升站点性能

简介 memcached 常被用来加速应用程序的处理,在这里,我们将着重于介绍将它部署于应用程序和环境中的最佳实践.这包括应该存储或不应存储哪些.如何处理数据的灵活分布以及如何调节用来更新 memcached 和所存储数据的方法.我们还将介绍对高可用性的解决方案的支持,比如 IBM WebSphere® eXtreme Scale. 所有的应用程序,特别是很多 web 应用程序都需要优化它们访问客户机和将信息返回至客户机的速度.可是,通常,返回的都是相同的信息.从数据源(数据库或文件系统)加载数

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

1. Append Outside of Loops 凡是触及到DOM都是有代价的.如果你向DOM当中附加大量的元素,你会想一次性将它们全部附加进来,而不是分多次进行.当在循环当中附加元素就会产生一个常见的问题. 1 $.each( myArray, function( i, item ) { 2 3 var newListItem = "<li>" + item + "</li>"; 4 5 $( "#ballers"

采用表达式树提升属性访问性能

项目背景, 采用贫血模式, 但希望在使用业务实体机业务规则上的数据属性,使用同一规则. 比如:在页面中, “RS_Department.Code" , "Department.Code"都可以正常访问. 业务实体类 直接使用Linq to Sql 自动生成的代码,跟数据库表一一对应. 如:RS_Requisition, RS_Department 业务规则类 实现数据库增删改查,扩展属性,其他业务规则等. public class Requisition : BLLTable

psutil 是因为该包能提升 memory_profiler 的性能

python 性能分析入门指南 一点号数据玩家昨天 限时干货下载:添加微信公众号"数据玩家「fbigdata」" 回复[7]免费获取[完整数据分析资料!(包括SPSS.SAS.SQL.EXCEL.Project)!] 英文:yexiaobai 译文:yexiaobai 虽然并非你编写的每个 Python 程序都要求一个严格的性能分析,但是让人放心的是,当问题发生的时候,Python 生态圈有各种各样的工具可以处理这类问题. 用 time 粗粒度的计算时间 $time pythonyou

如何从请求、传输、渲染3个方面提升Web前端性能

什么是WEB前端呢?就是用户电脑的浏览器所做的一切事情.我们来看看用户访问网站,浏览器都做了哪些事情: 输入网址 –> 解析域名 -> 请求页面 -> 解析页面并发送页面中的资源请求 -> 渲染资源 -> 输出页面 -> 监听用户操作 -> 重新渲染. 通过上面的路径可以看出浏览器分为请求.传输.渲染三部分来实现用户的访问,本文就从这三个部分来浅析如何提升WEB前端性能. 请求浏览器为了减少请求传输,实现了自己的缓存机制.浏览器缓存就是把一个已经请求过的Web资源

【转帖】AMD Zen 3处理器IPC性能提升17% 浮点性能大涨50%

AMD Zen 3处理器IPC性能提升17% 浮点性能大涨50% https://www.cnbeta.com/articles/tech/925543.htm AMD YES 下个月初发布7nm锐龙APU及移动版锐龙4000之后,AMD在7nm Zen2架构上就算是功德圆满了,剩下的就要全力以赴2020年要发布的7nm Zen3处理器了.最新消息对Zen3的性能提升非常乐观,认为浮点性能大涨50%,推动平均IPC性能提升17%,远超之前的预期. 访问购买页面: AMD旗舰店 目前我们能知道的就

提升HTML5的性能体验系列之五 webview启动速度优化及事件顺序解析

webview加载时有5个事件.触发顺序为loading.titleUpdate.rendering.rendered.loaded.webview开始载入页面时触发loading,载入过程中如果<title>节点已经解析并赋予新值,触发titleUpdate,页面开始渲染,触发rendering,页面渲染完毕,触发rendered,页面载入完毕触发loaded. loaded常用于判断页面是否载入完毕,载入完毕才显示新页面.但有时页面内容很长时,全部载入完毕比较慢,导致显示新窗体比较慢.为了

提升HTML5的性能体验系列之三 流畅下拉刷新和上拉

下拉刷新 为实现下拉刷新功能,大多H5框架都是通过DIV模拟下拉回弹动画,在低端android手机(Android4.4以下)上,DIV动画经常出现卡顿现象(特别是图文列表的情况).解决方案还是webview. 既然拉div卡,那就不拉div,改拉webview.webview的拉动是原生的,回弹效果也是原生的,体验与原生一致.思路是在父页面写titlebar,titlebar下面10像素左右写一个"下拉可刷新".然后append一个子webview,并设置为可下拉.那么在把子webv

提升html5的性能体验系列之一避免切页白屏

窗体切换白屏的现实问题 HTML5的性能比原生差很多,比如切页时白屏.列表滚动不流畅.下拉刷新和上拉翻页卡顿.在低端Android手机上,很多原生App常用的功能和体验效果都很难使用HTML5技术模拟.我们首先来看第一个问题,如何避免切页白屏. 浏览器的页面在切换时,由于其页面加载机制,在跳转到下一个页面时,先要请求联网.载入页面代码.构建dom.渲染,最后才显示出来.在最终结果渲染完毕前,会出现几十毫秒甚至数秒的白屏.原生App是没有这个问题的.虽然使用SPA单页应用模型,即ajax+div切