单机
软件版本
- java 11 : 相对java8 GC次数只有一半,单次GC时间增长 30 %
- hbase版本:hbase1.x -> hbase2.x 减少平均rt和999线。
- 连接池:c3p0 -> tomcat-jdbc,gc次数减少1/2,单次gc时间减少1/3.
- 数据库中间件zebra:使用动态路由,减少路由占用的堆,分库分表较多时效果明显。
GC调优
- 调整堆 -Xms -Xmx: 4-> 8 G (内存12G), GC次数一半,单次gc增长1/4。
- 调整并行回收线程数 ConcGCThreads (core * 5/8 + 3),并发标记数ParallelGCThreads(ConcGCThreads/4),
- 如果上游长尾效应明显,可考虑ZGC。
本地缓存
异步
- 回写缓存可异步减少实时链路rt。
升级硬件
- 扩实例核数,内存。
服务
扩容
- 扩实例数。注意redis,db等连接数。
单元化&抽象
- 连接数成为瓶颈可单元化。
- 存储层抽出一层服务,db连接数瓶颈(2k左右实例)转化为服务连接数瓶颈(fd数量)。