job分析

这个job,是从kafka读取海量json格式的数据,依次反序列化 + transform + 写存储
主要开销在:

  • 反序列化
  • transform时遍历json每个元素的开销
  • io耗时
  • jvm gc耗时

递归和循环

  • 同样的逻辑,优先使用循环,性能更好。
  • 递归带来的效率问题主要是函数调用带来的额外开销(函数的入栈出栈),以及栈容量的限制(次数太多可能会stack overflow)

换用其他的垃圾回收器及其配置

  • JDK15生产可用的ZGC
  • JDK11 + G1GC : 全部都是yongGC,每秒钟YoungGC 耗时约170ms,
  • JDK17 + ZGC: ZGC cycles 900ms+, ZGC Pauses Time 30+微秒
  • 最后结果,ZGC并没有展现出明显优势

选择合适的序列化library

  • 参考这个repo,进行了性能测试
  • 本地测试,反序列化为Map的性能,boon项目,比FastJson好一倍以上
  • 但是这个项目已经废弃很久,最多支持到JDK8
  • 还是没有采用这个项目

性能定位工具