背景
新重构撮合系统上线后,切了几个交易对过去,运行了一段时间,发现CPU居高不下,CPU飙高200%多,居高不下。
系统目前TPS 10000/s,日均4亿+订单。
分析过程
问题排除的时候,事先截图没保存,只有部分截图。
步骤一:查看CPU飙高的进程
步骤二:找到对应的线程
经分析该进程的线程信息,发现有两个线程各占据一半,分别99.9% 99.7%
步骤三:查看堆栈信息,结合代码分析线程行为(步骤三最为关键)☆☆☆☆☆
下面就开始分析这两个线程的行为活动。
-
一个是给行情发送mq消息的线程
-
查看堆栈信息后,分析发现问题出现在一个加密的方法上
-
-
一个是撮合核心业务线程
-
查看堆栈信息后,分析发现问题出现在一个HashMap resize扩容上
-
解决方案
- 撮合业务线程优化
该HashMap是为了解决前期撮合bug,纠正side。该bug已经修复,所以该HashMap也就没有什么卵用,直接去掉。
- 给行情发送mq消息的线程
加密方式对比