指标:
- 性能指标: 吞吐量,响应速度
- 响应时间: 平均响应时间, 百分数
- 并发量
- 秒开率
- 正确性
linux 系统 top - 1: us: 用户的态所占百分比 sy: 系统态所占百分比 ni: 高优先级应用所占百分比 id: cpu 空闲百分比 hi: 硬中断百分比 si: 软中断百分比 st: 宿主机队虚拟机的影响 wa: io 等待磁盘,写入写出
load average: 表示1 分钟, 5 分钟 15 分钟的负载
vmstat : vmstat 3 60 , 表示3秒刷新一次, 持续60秒 b 列读写磁盘 si/so: 交换分区对性能的影响 cs: 上下文切换
查看内存信息: /proc/meminfo 查看CPU信息: /proc/cpuinfo jvm 预先分配内存: -XX:+AlwaysPreTouch 使用nmon 工具: m加入内存,c加入cpu,n 加入网络,d加入磁盘
-Dcom.sun.management.jmxremote.port=14000 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
性能的几个测试工具: nmon : 系统性能 jconsole / visualVm : java 线程 jcmd : java 应用详细数据 arthas: 单个请求链的详情 wrk: 压力测试 2 个线程. 100 个连接 持续10 s wrk -t2 -c10 -d10s http://qf.csmxwl.com/fund/index/dj
[root@ggpt06 wrk]# ./wrk -t2 -c20 -d3s http://qf.csmxwl.com/fund/index/dj
Running 3s test @ http://qf.csmxwl.com/fund/index/dj
2 threads and 20 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 1.32s 639.51ms 1.83s 75.00%
Req/Sec 1.00 0.82 2.00 42.86%
7 requests in 3.00s, 415.46KB read
Socket errors: connect 0, read 0, write 0, timeout 3
Requests/sec: 2.33
Transfer/sec: 138.37KB
12 threads and 100 connections: 总共是12个线程,100个连接(不是一个线程对应一个连接) latency和Req/Sec: 代表单个线程的统计数据,latency代表延迟时间,Req/Sec代表单个线程每秒完成的请求数,他们都具有平均值, 标准偏差, 最大值, 正负一个标准差占比。一般我们来说我们主要关注平均值和最大值. 标准差如果太大说明样本本身离散程度比较高. 有可能系统性能波动很大. 23725 requests in 30.05s, 347.47MB read 在30秒之内总共有23725个请求,总共读取347.47MB的数据 Socket errors: connect 0, read 48, write 0, timeout 50 总共有48个读错误,50个超时. Requests/sec和Transfer/sec 所有线程平均每秒钟完成了789.57个请求,每秒钟读取11.56MB数据量
Guava : weakValue,weakKey 当没有任何强引用,与 key 或者 value 有关系时,就删掉整个缓存项。这两个函数经常被误解。
- maxumumSize
- initalCapacity