应用监控与调优

应用监控与调优

监控

skywalking快速上手

java agent配置 手记:https://www.imooc.com/article/306297

java agent插件 手记:https://www.imooc.com/article/305592

编写sky walking 手记: https://www.imooc.com/article/312560

动态配置: https://www.imooc.com/article/312690

spring boot actuator

actuator可视化:

​ spring boot admin

​ prometheus + grafana

JavaMelody

Tomcat 内置工具

​ Tomcat Manager

PSI Probe

池化技术

对象池

​ 复用对象

​ 开源项目:commons-pool2

线程池

​ 复用线程

​ ThreadPoolExecutor

​ SheduledThreadExecutor

​ ForkJoinPool

#### 线程池调优实战

https://www.javacodegeeks.com/2012/04/threading-stories-about-robust-thread.html

连接池

​ 复用连接

​ example:

​ 数据库连接池

​ redis连接池

​ http连接池

​ HttpClient、OKHTTP自带连接池

​ RestTemplate、Feign底层可使用HttpClient/OKHTTP的连接池

  • 本地调用异步化

    • 创建线程

    • 线程池

    • @Async

      Ps:

      • @Async注解标注的方法必须返回void或future
      • 建议将@Async标注的方法放到独立的类中去
      • 建议自定义BlockingQueue的大小
  • 远程调用异步化

    • AsyncRestTemplate使用
    • WebClient使用
    • 基于MQ

锁机制

synchronized关键字

可重入锁

通过指定jvm参数来实现:

锁分级

锁消除

锁粗化

ReentrantLock

完全互斥

ReentrantReadWriteLock

读锁共享,写锁互斥