记一次用alinode分析,降低cpu使用率

问题描述

在某个风和日丽的早晨,boss浩向我提出了一个需求。最近落地页系统cpu特别高,经常到八九十,让我注册alinode免费十五天专业版去看一下怎么回事。
为啥要注册alinode免费十五天专业版呢。因为一个月700呵呵呵呵。

简单介绍一下我们的落地页系统使用情况。是一个移动端广告页展现的系统,展现在手机浏览器上,里面的逻辑就是下载和向服务器发送监控数据,直接存mongo,并发量特别高。此为前提。

寻找问题

通过alinode官网看了一下怎么安装部署,文档十分简单,给个赞。然后欢快的跑起了监控程序。过了一会。

这都是啥。。。。。。
啥玩意啊!
咋回事啊!
那咋整啊!
于是我百度了一圈回来。

这个图不是当时的图,当时cpu就在八九十左右徘徊于是在右侧“抓取性能数据“那里点击CPU Profile 。cpu数据将会存放在文件那里。我们去文件那里点击转储=>分析,然后我们将看到

啥玩意啊!
咋回事啊!
那咋整啊!

不要慌。我们点击Chart,选择Heavy

这个就较为清晰了,我按照total从大到小排序。然后
清晰个P啊,一个我也不懂。
按理来说,这是在某个时刻,各个方法占用cpu的百分比,我知道找出不正常的就行了。但是这里我一个都看不懂,都是框架的方法。于是在我百度个遍的时候。我找到了boss浩。

boss浩看了看告诉我deserializeObject是mongo的反序列,就是用driver查数据库的时候,返回的数据会反序列化一下。

那么我就恍然大悟。

按理来说我们的系统不需要查什么东西,直接记录。

于是我在index里找到了一个所有的路由必经的中间件,里边居然写着collection.findOne()

当然这是boss浩加的。这样的话,每次pv都会上数据库查个啥啥啥出来,就这个操作,占用了至少18%的CPU。再跟boss浩沟通过后,这个东西现在不用了。于是注释之,cpu降到40~60 天下太平

总结

1.alinode还是挺神器的,但是我太弱了。
2.有一些数据是alinode自己定义的但是不知道是啥意思哪都没写,比如load
3.官方博客会写一些教大家怎么分析的文章,我觉得应该再多写一点,我太白了。

你可能感兴趣的:(调试与优化)