高性能产品必由之路
★★★性能测试包括
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.开始安装