应用监控与调优
监控
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
读锁共享,写锁互斥