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、買更快速度的硬盤、增加內存、提升網絡帶寬等這些從硬件角度下手的方式,還有像數據庫調優、應用服務器調優等等。
文章來源于領測軟件測試網 http://www.kjueaiud.com/