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是多少等等。
【NextPage】JVM
JVM调优的文章相对来说对照多,大家需要了解的主要是-Xms÷-Xmx、并行GC、-XX:MaxPermSize÷-XX:MaxNewSize、-XX:ThreadStackSize、NIO采用epoll等等。
简单的列这两个,其实性能调优的手段还有非常的多,例如简单的增加CPU、买更快速度的硬盘、增加内存、提升网络带宽等这些从硬件角度下手的方式,还有像数据库调优、应用服务器调优等等。
暂时就写这么些了,以后列一些具体的例子来写,那样更为清晰些,这样的话更多的是讲述一下过程,可以大概了解下做性能调优应该去学习的知识点,^_^,也欢迎有阅历的同学们贡献出一些实例的分享。
文章来源于领测软件测试网 https://www.ltesting.net/