Java性能调优实战-01 Java性能调优实战

1. 为什么要做性能调优?

如果不进行性能调优,那它就好比一颗定时炸弹,随时都会出问题,有些性能问题是时间累积慢慢产生的,到了一定时间自然就爆炸了;而更多的性能问题是由访问量的波动导致的,

性能调优的目的是想办法提前将问题暴露出来,了解系统所承受的压力、瓶颈。

2. 有哪些参考因素可以体现系统的性能?

  • CPU
  • 内存
  • 磁盘 I/O
  • 网络
  • 异常
  • 数据库
  • 锁竞争

3. 根据上面参考因素得到的如下系统性能指标

  • 响应时间
    • 数据库响应时间
    • 服务端响应时间
    • 网络响应时间
    • 客户端响应时间
  • 吞吐量
    • 磁盘吞吐量
    • 网络吞吐量
  • 计算机资源分配使用率
  • 负载承受能力

Q&&A

问:QPS&&TPS

答:QPS(query per second)是单位时间内请求的数量。TPS代表一个事务的处理,可以包含了多次请求。很多公司用QPS作为接口吞吐量的指标,也有很多公司使用TPS作为标准,两者都能表现出系统的吞吐量的大小,TPS的一次事务代表一次用户操作到服务器返回结果,QPS的一次请求代表一个接口的一次请求到服务器返回结果。当一次用户操作只包含一个请求接口时,TPS和QPS没有区别。

问:不输出JVM 异常堆栈跟踪信息
答:可以自己实现自定义异常,继承RuntimeException,然后将writableStackTrace设置为false。
以下是RuntimeException的构造函数:

1
2
3
4
5
protected RuntimeException(String message, Throwable cause,
boolean enableSuppression,
boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}