CPU调优总结
原因:应用启动后,在未做调用时cpu占用20%-30% 这肯定是有问题的,严重影响压测质量和存在线上风险,所以开始排查。 下面将详细写出排查和分析过程。 1,确认问题 登录 三台服务器,top (或者vmstat 1)一下,查看cpu占用情况: 三台机器都很高,而且还未有调用量, 有问题。 登录IMSI销售接口服务器对比查看: 可以确定应用不正常了。开始解决。 2,解决过程 因为是cpu高,内存不高,所以确定是线程问题,所以去到问题服务器抓取线程 ./jstack xx >> /home/admin/jstack.log (xx 是应用的进程号) 将线程日志搞到跳板机 再搞到本地分析。 线程分析工具用的是 jca,打开查看: 而正常的应用: 问题应用runnable 线程竟然有900多,waite线程不会占用cpu资源,暂时不用分析。点击详细: 发现大量的NettyClientSelector, 嗯? 这应该是hsf的线程吧!(这里分析是错的!!!) 然而忽略了最重要的MQ-AsyncArrayDispatcher-Thread-XX,这个后面会详细写。 ...