服务升级重启后,发现cpu很高,700%, 查看线程dump发现都闲着,不干活,
"bizExecutorGroup-3-24" prio=10 tid=0x00007f65dc009000 nid=0x6cef runnable [0x00007f656f19f000] java.lang.Thread.State: RUNNABLE at java.util.HashMap.get(Connection websocket closed
然后top -H -p 11111,找到cpu高的线程号, 在dump里查找,发现是hashMap的get方法, 搜了一下,发现一堆cpu高的文章, 果断重启后暂时OK。
这个map数据不会很多,大意了,果断换成ConcurrentHashMap。
------------------ 貌似要有两个线程在同时进行put,同时触发resize, 并且之前一个桶里的两个相邻的对象在容量变了后仍然hash到了同样的数组位置中, 这样才有可能导致问题,因此这现象只偶尔出现。 ------------------
|