GithubHelp home page GithubHelp logo

performance_analysis's Introduction

我的性能测试经验分享

闲扯:

  • 性能测试门槛较高,选择前还是要谨慎,那么看下一名合格的性能测试工程师要求:
    • 硬件大概信息,当硬件出现性能瓶颈后,提出可供替代硬件方案信息建议
    • 系统框架的优劣势,以及框架下各模块的合理配置优化建议
    • 上面这条好高大上,要完成这样任务的门槛也不低,我们来看下:
      • 编程语言:Java,C,C#,C++,PHP,你不知道以后的工作他们哪个会出现在你的视线中.....
        • Java,php占比较高,目前的主流互联网公司都在用Java,创业公司PHP会多一些
        • C,C#,C++,如果你不是去做银行的外包项目或者游戏公司,这部分一般用不到滴。
      • 服务端: Tomcat,Apache,IIS,Nginx,Mybatis,servlet,这些可不是要求你拼写单词哦~
      • 数据端:Oracle,Mysql,Sqlserver,Postgresql,Mongodb,Redis,Mercache
      • 好吧,这样的性能测试工程师至少我还没有见过,但我认为至少掌握以下硬性技能内容:
        • 性能测试工具的选择,以及掌握编写脚本的语言
        • 公司项目框架基本了解,数据的流转以及存储
        • 项目所用服务配置以及优化方法--参数辣么多记不住,其实网络上可以找到很多有用的信息,优化还是需要自身积累
        • 服务端所用编程语言需要你本身具备该技能--当然low点的办法是拉个后台开发人员陪你一起
        • 项目所用数据库的合理配置和优化方法 -- 本文后面可供查询了解
  • 专职性能还好,如果说你想大包大揽,那么你不仅累,还要维护很多的知识,很痛苦,我还在挣扎中....
  • ####编写已用4小时,分享个bootstrap编写的github主页(记录我的职业生涯中积累的点点滴滴~):

导读目录:

  • 性能测试划分
  • 性能测试准备工作
  • 性能测试常见问题
  • Linux监控
  • 数据库监控
  • 服务器参数配置

前端性能框架:

  • Selenium+YSlow+ShowSlow实现页面性能评估自动化,还是不错的工具。

1.性能测试划分

  • 配置测试:硬件选型,软件参数配置(数据库,服务器配置)
  • 基准测试:以前版本作为基准
  • 负载测试:找系统瓶颈,评估性能指标,更多的是过程,阶梯式
  • 压力测试:高负载是压力,让系统崩溃,看恢复能力以及时间

2.性能测试前评估

  • 关键业务
  • 日PV量
  • 逻辑复杂度
  • 运营推广
  • 内存和CPU消耗高的业务

3.通常问题

  • 一般性能测试构造数据时不要相同,因为可以避开缓存影响,需要测试缓存可以在处理
  • 明确可用负载机,服务器软硬件信息
  • 明确业务数据流走向,才可以更好的在出现问题时排查问题
  • LR中声明局部变量放在脚本开头
  • LR全局变量在globals.h中声明
  • 网络瓶颈:内网100M,吞吐率不能超过100/8=12.5
  • Ip欺骗时,主机应该单网卡,设置为静态IP,多网卡应禁用
  • feature
  • Get请求:发送数据少,返回数据多;Post请求:发送数据多,返回数据少,大部分关联都是在post数据中
  • 添加负载机时,要勾选Use the Perc...选项,才可以一个脚本在多个负载机上运行,
    否则只能同个脚本按组跑,可设置不同负载机ip
     * hits per second:每秒点击次数,是指接收到服务器的状态码  
    简单介绍了HTTP协议的概要,我们再来介绍HTTP协议处理状态和返回状态码的含义
    HTTP协议处理状态,当一个XMLHttpRequest初次创建时,这个属性的值从0开始,直到
    接收到完整的HTTP响应,这个值增加到4。
    这五个状态中每一个都有一个相关联的非正式的名称,下表列出了状态,名称和含义:
    状态  名称      描述
    0   Uninitializ 初始化状态。XMLHttpRequest对象已创建或已被abort()方法重置
    1   Open        send()方法未调用。请求还没有被发送
    2   Sent        send()方法已调用,HTTP请求以发送到web服务器。未接收到响应
    3   Receiving   所有响应头部都已经接收到,响应体开始接收但未完成’
    4   Loaded      HTTP响应已经完全接收
    ok,处理完毕的时候服务端,无论是成功还是失败都会返回一个状态码给客户端。

4.性能排查思路

  • 当性能指标出现拐点时:
    • 负载机硬件资源
    • 网络瓶颈 -- 观察网络吞吐量计算
    • 服务器硬件资源 -- cpu,内存,磁盘
    • 数据库服务器硬件资源 -- cpu,内存,磁盘
    • 服务器的各项参数配置,若分布式需检查配置是否生效,以及请求分配规则是否合理
    • 数据库各项性能指标 -- 下面有细节分析过程
    • sql反推到代码块
    • 第三方监控工具,监控运行代码;例如:jprofiler(java) xhprof(php)

5.性能测试结果分析以及定位

  • 数据库相关优化信息(向DBA靠近)
    • 闲谈:
      • 数据库很多种,常用也就几种,但作为测试想去做好调优同样不现实,关键性指标是我们提出合理化建议的武器
        正确的职责定位会让你有更好的进步空间
      • 面试常会被问到而且有意思的sql
        • mysql: select * from 表名 where 条件 order by 字段 limit 1,3(指针从1开始,取3条记录)
        • postgresql: select * from 表名 where 条件 order by 字段 limit 2 OFFSET 0(指针从0开始,取2条记录)
        • sqlserver: select top 10 * from ( select top 20 * from 表明 order by 字段q asc) a order by 字段q desc(取10到19条记录)
        • oracle: select * from (select rownum as rn,id from 表名 where 条件 order by 字段) where rn=行数 ( 或者 rn between n and m (取第n到第m条记录))
      • 数据库通常监控指标:
        • 数据库连接数
        • 慢查询sql
        • 线程池大小
        • 每秒事务数
        • QueryCache命中率
        • 锁定状态
      • 数据库常用性能策略:读写分离
  • 服务器相关参数优化
    • 最大连接数
    • 线程池
    • 释放链接时间

performance_analysis's People

Contributors

linlin547 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.