高性能产品必由之路

Posted wxlf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高性能产品必由之路相关的知识,希望对你有一定的参考价值。

★★★性能测试包括
1.横向扩展能力
2、数据库优化
3、尽量让一台机器能够承载更多的用户请求
★★★为什么要进行性能测试
   能够有效评估系统的性能指标,用于系统的性能评估
   能够识别系统的性能瓶颈,协助性能调优
   能够指导突发流量承载方案的制定
   能够用于系统运维成本的预算


★★★性能测试概要
什么是性能测试
1.性能测试就是通过技术的手段模拟大量用户同时访问被测应用,观察,记录和分析系统的各项性能指标的过程。
2.性能测试的目标是评估系统的性能瓶颈,预测系统的最大用户负载能力。
--性能测试的两个关键点
   模拟大量并发用户
   监控系统负载参数分析系统瓶颈
--性能指标
   ·平均响应时间(TTLB)-平均每个请求从发送到接收响应的时间
   ·合理的平均平均响应时间-2/5/10原则(2秒之内给客户响应被用户认为是非常有吸引力的用户体验。在5秒之内响应客户被认为比较不错的用户体验。在10秒内给用户响应被认为糟糕的用户体验。如果超过10秒还没有得到响应,那么大多用户会认为这次请求是失败的)
   ·平均响应时间的业务影响
   ·系统资源类
       CPU--CPU的占用率
       内存--内存的占用率,换页数等
       I/O--读写请求数、读写量等
       带宽--进站出站带宽占用率
★★★性能测试的一般分类
    压力测试
      为了验证系统设计负荷正常业务负载情况下系统性能表现的测试
    负载测试   
      为了验证系统在极端负载情况下的性能表现的测试    

☆☆☆☆☆☆☆☆性能测试相关工具介绍



···top(监控每一个进程的资源占用)
   top能够获取所有每一个进程所占用的资源情况
     PID进程运行的ID
     USER运行该进程的用户名
     PR表示进程可被执行的优先级别,值越小,优先级别越高越早被执行。
    NI进程Nice值,进程可被执行的优先级的修正数值PR(new)=PR(old)+nice
   VIRT虚拟内存的大小
   RES真实的物理内存的大小
   SHR 共享内存的占用大小
   %MEM 内存占用的百分比
   %CPU cpu占用的百分比
   TIME+真正运行该进程的时长
   COMMAND是什么在运行这个进程
--输入o打开下面的界面(显示那些列,列显示的位置)
   可以上移(shift+对应字母),下移(对应字母)
--输入f
   可以想要显示哪一个列就输入相对应字母,取消显示也是输入相对应的带有星号的字母
--输入F或者O(是以哪一种方式进行排序)
  带星号的表示当前时以什么样的方式进行排序的(输入对应列的名称可以自定义排序)
  比如输入%MEM对应的n实现以MEM进行排序
--top -ab -n 1
  a表示按照内存进行排序
  b表示全部进程进行显示
  -n 1表示显示一次,不需要获取当前的最新的系统负载情况
--可以结合grep进行使用
  eg: top -ab -n 1 | grep python




···sysstat(统计系统的各种资源占用情况)
---首先是安装sysstat 可以选择yum安装
   这里采用光驱挂载的方式进行安装
   1.到/home/wangxiaolan/rom  挂载mount/dev/cdrom /home/wangxiaolan/rom
   2.cd /home/wangxiaolan/rom    cd Packages
   3.rpm -ivh sysstat-9.0.4-27.el6.i686.rpm
   4.安装完成进行配置并且修改
     默认的是每十分钟获取一次
     作为开发者我们最好修改为每一分钟一次
   5.查看获取到的数据存放的位置
     cd /var/log/sa
     其中sa开头的文件表示每分钟执行的,sar表示每天的总结
---- sar -q -f+对应的文件名(查看CPU的任务数和任务的繁重程度)  
---- sar -p -f+对应的文件名(查看CPU的占用率,占用百分比)
     %nice:改过优先级的进程CPU占用率
     %steal:管理程序为另一个虚拟进程提供服务而等待虚拟CPU的百分比
    %iowait:磁盘读写等待占用的CPU百分比
---- sar -r -f+对应的文件(查看内存)
    kbbuffers是针对磁盘块的缓存;kbcached是针对文件系统的,是文件的缓存;kbcommit为了保证程序的正常运行需要的内存,相应的%commit是百分比
%memused+%commit大于百分之百会导致内存频繁的换页,动用虚拟内存。
---- sar -B -f+对应的文件名
---- sar -W -f+对应的文件名(和swap进行的数据的写入写出)
---- sar -b -f+对应的文件名(查看I/O的情况)
    tps:每秒钟物理设备的I/O传输总量
    rtps:每秒钟从物理设备读入的数据总量
    wtps:每秒钟向物理设备写入的数据总量
    breads/s:每秒钟从物理设备读入的数据量,单位为块/s
    bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s
    tps=rtps+wtps;
    当wtps过高时表示写操作占用过高,优化时我们可以将我们要写入磁盘的打包一起写入磁盘
---- sar -d -f+对应的文件名
   rd_sec/s:每秒读扇区的次数.
   wr_sec/s:每秒写扇区的次数.
---- sar -n DEV -f+对应的文件名(查看network的情况)
---- sar -n EDEV -f +对应的文件名(显示关于网络错误的统计数据)




···fio(评估磁盘读写性能极限)
----首先是进行安装(可以选择yum安装)这里通过解压缩的方式进行安装
   1.进入tar目录下,对压缩包尽心解压
    tar -jxvf fio-2.1.4.tar.bz2
   2.进入解压后的文件夹、
    cd fio-2.1.4
   3.make && make install
FIO分顺序读,随机读,顺序写,随机写,混合随机读写模式。此处以顺序读的模式进行演示




···Jmeter(Apache组织开发的性能测试工具)
    支持多类型的测试 web http https ftp tcp mongodb ldap
    linux上安装同上


★★★被测系统介绍(linux上安装ecshop)
1.上传压缩包到服务器并解压(zip解压用的是unzip)
2.复制文件夹upload到根目录下ECShop
3.修改ecshop的所有者
chown -R apache:apache ecshop
4.创建日志文件(因为配置的时候用到)
进入ecshop下创建日志 mkdir log
同样修改所有者(同上)
5.配置apache服务器
cd /usr/local/http2/conf/httpd.conf
6.重启apache服务器
service httpd restart
7.开始安装






























































以上是关于高性能产品必由之路的主要内容,如果未能解决你的问题,请参考以下文章

性能追求之路——MaxCompute2.0的前世今生

MongoDB之路

[js高手之路]性能优化技巧 - 缓存与函数重载实战

大数据之路

大型网站系统架构演化之路

推荐系统之路 :产品聚类