测量系统性能
对于新系统而言,需要评估出其正式运行时的数据量的增加状态;而对于已运行的系统,则需要根据监控获取到系统的运行数据(例如高峰并发数、系统的响应速度状态、系统的load、网络流量、每类要求在总的要求中所占的百分比等)。
对于新系统而言,要评估出具体的性能相对来说细微好做一点,因为此时系统通常较为单纯,数据量的增加也不可以是一夜之间增加的,因此基天性够遵循一种正常的方式在测试环境评估出其正式运行的性能。
而对于已运行的系统而言,则较为麻烦,因为通常来讲要在测试环境中模拟正式运行环境基础是不太可以的,因此这个时候通常要采用一些模拟的方式或更高压力的方式来尽量更为准确的评估出系统的性能。
在测试系统性能时,通常可采用的方式有:
1、单元测试;
可借助单元测试来测试某个要求的性能;
2、压力测试;
压力测试无疑是测量系统性能中最常采用的方式,根据定义的性能主旨对系统进行压力测试,以一定系统是否满足性能要求,同时也可以根据压力测试的效果来分析系统的瓶颈,进而进行对应的调优,可用于做压力测试的工具还是不少的,像loadrunner、jmeter等等,不过压力测试这个话题实在太大了,不在这里展开去讲了,不过我也不怎么懂就是,呵呵。
分析系统性能瓶颈
根据测量系统性能的效果,多数是可以分析出系统性能的瓶颈,同时还可以结合像jvm堆栈、jprofiler、系统日志等来进行进一步确凿定,另外也可以根据性能调优人员的阅历,例如可以去了解开发人员是否采用了不相宜的数据结构等。
简单说一个线程分析的例子:
借助kill -3 pid来获取到目前jvm的线程堆栈信息,特别需要关注的是里面wait for monitor这样的线程,这种线程是指在等待锁的线程,等待一两分钟后再次kill -3 pid,看看这些wait for monitor的线程的变化状态,这对于分析线程中是否存在不合理的竞争过高的锁的分析是非常主要的。
这一步无疑也是性能调优过程中最难的一步了,分析系统性能瓶颈这种基础只能结合实际例子来讲了,准确在后续抽取一两个例子来进行讲解。
性能调优
在分析出系统性能的瓶颈后,其实这一步相对来说还好做些,当然,需要建立在对软硬件知识都有很好的深入了解的基础上,在这里列举一些对照稀有的性能调优的手段,多数是抄来或google来的,自己在这方面的阅历还不多,欲望大家多加指示。
Redhat Linux内核
Redhat linux内核版本升级到2。6,2。6和2。4的差别还是很多的,例如对epoll的支持、NPTL的采用;epoll的支持对于java而言也是很主要的,在高并发的状态下nio是否采用epoll还是有挺大的差别的;而NPTL的采用对于多线程次序而言更是极为主要。
另外需要关注像linux的File Handles是多少、network buffer是多少、MTU是多少、Memory Page size是多少等等。
JVM
JVM调优的文章相对来说对照多,大家需要了解的主要是-Xms÷-Xmx、并行GC、-XX:MaxPermSize÷-XX:MaxNewSize、-XX:ThreadStackSize、NIO采用epoll等等。
简单的列这两个,其实性能调优的手段还有非常的多,例如简单的增加CPU、买更快速度的硬盘、增加内存、提升网络带宽等这些从硬件角度下手的方式,还有像数据库调优、应用服务器调优等等。
文章来源于领测软件测试网 https://www.ltesting.net/