• 学习笔记5:《大型网站技术架构 核心原理与案例分析》之 瞬时响应:网站的高性能架构


    网站性能测试是性能优化的前提和基础,也是性能优化结果的检查和度量标准。

    不同的人员会有不同的衡量标准:用户,开发人员,运维人员。

    一、性能测试指标

    1、响应时间

    指应用执行一个操作所需要的时间,包括从发出请求开始到收到最后的响应数据的时间。响应时间是系统最重要的性能指标,直观的反映了系统的‘快慢’。

    2、并发数

    系统能够同时处理请求的数目,这个数字反映了系统的负载特性,对于网站而言,并发数就是网站并发用户数,指同时提交请求的用户数目。

    网站系统用户数》网站在线用户数》网站并发用户数

    在网站设计初期,产品经理和运营人员就需要规划不同发展阶段的网站系统用户数,并以此为基础,根据产品特性和运营手段,推算在线用户数和并发用户数。

    这些指标将成为系统非功能设计的重要依据。

    3、吞吐量

    指单位时间内系统处理的请求数目,体现系统的整体处理能力。

    • TPS:每秒事务数
    • HPS:每秒HTTP请求数
    • QPS:每秒查询数

    响应时间,并发数,吞吐量,三者可以用高速公路来形容。响应时间是车速,并发量是正在行驶的汽车,吞吐量是今天通过收费站的汽车数目。

    4、性能计数器

    描述服务器或操作系统性能的一些指标,如系统负载,对象与线程数,内存,CPU,磁盘,网络IO等。

    • 系统负载(System Load):当前CPU正在执行和等待CPU执行的线程数目之和,是反映系统忙闲程度的重要指标。

    二、性能测试方法

    1、性能测试

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

    2、负载测试

    在性能测试的基础上,继续对系统增加并发请求,直到系统的某项或多项性能指标达到安全临界值,直到处理能力出现下降。

    3、压力测试

    在超过安全负载的情况下,对系统继续施加压力,直到系统崩溃或停止服务,以获得系统最大压力承受范围。

    4、稳定性测试

    被测试系统在一定的硬件,网络,软件环境下,给系统加载一定的业务压力,运行一段较长时间,以此检测系统是否稳定

    三、性能测试报告

    并发数,响应时间,TPS,错误率,Load,内存,备注(性能测试/负载测试/压力测试)

    四、性能优化策略

    1、浏览器访问优化(此方法现在用的比较少)

    2、CDN加速

    3、反向代理

    3、应用服务器性能优化

    • 分布式缓存

    (1)、缓存的基本原理:对key进行hashcode得到int值,这个int值对hash表的长度取余数,余数结果就是缓存的索引值。

    (2)、合理使用缓存

            频繁修改的数据不放入缓存,放入缓存的数据读写比例应该在2:1以上;

            没有热点的访问不放入缓存;

            数据不一致与脏读:缓存都有有效期,失效的缓存将被移除出内存,最新数据直接从数据库中读取。因此应用要容忍一定时间的数据不一致。

            缓存可用性:通过部署分布式缓存服务器解决缓存可用性问题。

            缓存预热:在系统启动之初就读取热点数据到缓存。

            缓存穿透:一些恶意的访问在缓存中会查无数据,就会直接与数据库交互。这些可以对这些没有查询结果的访问也缓存起来,避免频繁读取数据库。

    • 异步

    使用消息队列将调用异步化,可改善网站的扩展性,同时也具有很好的削峰作用。

    • 集群

    4、代码优化

    • 多线程

    启动线程数=【任务执行时间/(任务执行时间-IO等待时间)】*CPU内核数。

    如果是计算型任务,启动线程数最多不超过CPU内核数。反之可以加大线程数,可以增加系统吞吐量。

    注意:线程安全问题。

    主要解决手段:将对象设计为无状态对象;使用局部变量;并发访问资源时使用锁。

    • 资源复用:有两种主要模式:单例和对象池。
    • 数据结构:恰当的数据结构会使软件性能得到极大的提高。例如:原始字符串--->MD5--->信息指纹--->Hash计算--->HashCode。
    • 垃圾回收:如果web应用运行在JVM等具有垃圾回收功能的环境中,那么垃圾回收可能会对系统的性能产生巨大影响。全量回收对于系统性能会产生较大的影响。

    因此要合理设置Young Generation和Old Generation。

    5、存储优化:机械硬盘VS固态硬盘,B+树和LSM树,RAID和HDFS.

    6、数据库优化

  • 相关阅读:
    thinkphp 关联
    php io
    phpstorm 生产php pojo类
    解决在mysql表中删除自增id数据后,再添加数据时,id不会自增1的问题
    thinkphp model
    thinkphp 数据库连接报错 SQLSTATE[HY000] [2002] No such file or directory
    thinkphp获取目录的方法
    thinkphp数据库连接
    css3背景颜色渐变属性
    CentOS开机自动运行自己的脚本详解
  • 原文地址:https://www.cnblogs.com/huiy/p/6705554.html
Copyright © 2020-2023  润新知