开发工具 性能监控的好工具 - NewRelic 简介

quakewang · 发布于 2014年10月31日 · 最后由 bingdingsi666 回复于 2016年5月09日 · 36504 次阅读
162
本帖已被设为精华帖!

我们蝉游记服务器端性能监控一直用 http://newrelic.com/ ,用它的免费版本N长时间,有必要为好工具义务宣传一下。

首先你需要在网站上注册一个新帐号,根据服务器端的应用框架选择安装对应的插件,它提供了很多常见应用框架插件,以Rails为例子,只需要在Gemfile配置,执行bundle install即可:

gem 'newrelic_rpm'

然后下载对应的newrlic.yml配置文件,放入到应用目录,进行一些参数的调整。将应用重新部署以后,等几分钟,让插件收集到性能相关数据,再去访问NewRelic网站,就可以看到各种图表了。

首先需要关注的是请求的响应时间图表,用这个图表可以对请求在服务器端耗时有个整体印象: [img]http://dl2.iteye.com/upload/attachment/0102/6870/b315e203-5433-3aa0-8a28-1ef87c9b70c1.png/img][ 从图表上可以看到,在这个时间段,请求的平均耗时是52ms,同时可以看到每个请求的Ruby代码和数据库执行时间占据了绝大部分,还有少量的外部服务调用时间(比如第3方Oauth或者API)。由于我们使用OOB GC,所以在图表上几乎没有GC的时间。

另外右上角有一个3.58s的浏览器时间,这个是指用户访问网页,从请求发出,到整个页面完全加载完成(包括图片,css,js等)。

第二个图表是Apdex (Application Performance Index),从这里可以看到大部分用户是否满意你的应用响应速度: [img]http://dl2.iteye.com/upload/attachment/0102/6878/2a4f6da4-3dac-3cd4-bd65-f05075428660.png/img][

从图表可以看到,99%的用户非常满意请求响应时间(在我们的应用里面,大部分请求是客户端调用api),93%的用户非常满意页面加载完成的时间。我们用的指标是NewRelic默认设置的500ms和7s,你还可以自己进行调整。

第3个图表是吞吐量 [img]http://dl2.iteye.com/upload/attachment/0102/6880/0dc40e73-6f1b-3599-ae73-6ade99623007.png/img][ 可以看出在这半个小时的区间,平均每分钟有1050个请求。用这个图表,通过調整时间段(,了解整个应用什么时候是高峰,什么时候是低谷,方便将一些批处理,备份等任务放在访问低谷的时间段进行。还有当用户报告无法访问的时候,可以通过查看吞吐量是否有急剧下降,来判断是个例还是整体故障,来确定解决问题的优先级。免费版本的NewRelic,只能查看过去24小时的数据,升级到付费帐号,可以查看所有的历史数据。

第4个图表是根据请求的时间和请求的次数,列出一个最耗时的请求 [img]http://dl2.iteye.com/upload/attachment/0102/6892/ffdf1aba-03e5-3962-aab7-5c807272f1bd.png/img][ 我们可以根据这个排列顺序,来考虑对于访问量大,同时又耗时的请求进行重点性能优化。 点击具体的请求,还可以看到请求耗时的分布情况: [img]http://dl2.iteye.com/upload/attachment/0102/6894/8c9b5712-5bf8-38b8-9905-df348e632a4d.png/img][ 从图表上可以看到这个请求,在渲染json数据耗费了比较多的时间,另外在ActiveRecord的查询上也耗费了一些时间,如果要优化的话,就可以从渲染结果加片段缓存,或者查询优化入手。升级到付费版本,还能查看到具体的sql语句执行情况,如果有slow query,还能显示explain的结果。

第5个图表,是错误率 [img]http://dl2.iteye.com/upload/attachment/0102/6898/101f9130-11e4-341e-b3df-e3054252fd69.png/img][ 在我们应用中引发错误的大部分是一些爬虫404,还有一些是异常数据没有处理好导致,这里就不详细介绍了。这个图表对于用户反馈错误定位也是很有帮助的。

第6个图表,是应用性能分布到各个服务器状态 [img]http://dl2.iteye.com/upload/attachment/0102/6900/3a4f6585-e5a6-3a4a-bf1a-56049d3af2d9.png/img][ 对于了解服务器资源和扩容计划很有帮助。顺便说一个实际遇到的事情,发现过某台主机(我们用的云主机)的响应时间就是比其他台要慢50%以上,对比发现这台的CPU和Disk IO都比其他台要弱,后来报告给云主机服务商,通过迁移到了新的物理机解决了。

除了上述的这些性能图表,NewRelic也提供了很多监控的选项,比如ping,内存/存储警报等,可以将报警发送到邮件,或者推送到移动客户端: [img]http://dl2.iteye.com/upload/attachment/0102/6904/48479e62-88b9-3d0b-b98d-0be4d6c6c135.png/img][

这里就简单介绍一下它免费版本的少量功能,更多的功能留待大家去玩吧。最后还要提一下最喜欢的scalability report和database report,可以申请试用付费帐号来体验,是我见过最赞的报表了。

共收到 46 条回复
2107

多谢多谢分享

8345

期待 @quakewang 上 teahour 聊聊蝉游记。

3253

同期待

341

:plus1:

9442

预备加上

3753

👍 相信很多人也用 newrelic 我自己也用了很久但是没有动力写出来 感谢分享

10087

:plus1:

1551

谢谢分享。

4277

我在padrino项目里也基本是按照rails的方式配的,加上gem和yml配置就跑起来了,但是在显示请求响应时间那里只显示出来middleware和ruby的执行时间,需要额外的配置么?

3719

End user Apdex score < 0.85 ?这个什么意思啊?

8345

#9楼 @libuchao Thx, 😰 人老了,忘性大。

10485

很不错

3672

这个能免费使用好多?

96

最近正开始研究 newrelic 的 ruby agent,开源的。https://github.com/newrelic/rpm

1286

点赞!!

1674

感谢楼主分享

9695

Awesome !

8783

感谢分享

7733

感谢分享

3719

不明白这是什么?

96

谢谢分享。

请问throughput有办法设置剔除health check的量吗?

15710

谢谢 @quakewang ! 期待有Get started 建议教程~~

96

学习了~

96

看上去不错~

162

#22楼 @anklos health check一般频率不高(比如1分钟一次),没办法,而且也没必要剔除吧。

#21楼 @sjzg001 Apdex score < 0.7,一般是某些页面加载太慢了,比如图片资源加载影响到了整个页面加载速度,你可以点击看详情

162

#10楼 @dddd1919 不需要额外设置,你padrino也用的activerecord吗?database应该识别到的。Ruby VM GC时间也应该是直接识别到的。

6829

超赞!之前试用了下,但是一直没有好好研究,这不教程都出来了。

96

#26楼 @quakewang 我没说清楚。我指的是load balancer的health check(比如aws的ELB), 基本是每秒钟ping一下后端的web服务器/status来决定后端的web服务器是不是状态良好,如果不好就从server pool里面去掉。如果有3台web服务器,那么newrelic的rpm就会增加3*60=180。当然确实也不是很大。

162

#29楼 @anklos 这个需求可以通过action filter来解决 newrelic_ignore :only => [:check]

96

#30楼 @quakewang 帅气!谢谢!

4277

#27楼 @quakewang 我只用了mongoid,看来是不识别的,统统记为middleware,而且有的请求是要持续1-2s的主要是花在imagemagick的处理上也都计到了ruby上,还提示了 Missing GC timings,额,不细分析的话还是挺直观的

5984

收费版开始有试用的,当初用newrelic的sql分析找到了个rails2.3的activerecord的bug.

7294

有人和Grape一起用过吗?都显示为Proc.call

1249

这货还可以监控 server , 我们是连 server 运行状况一起用 NewRelic 来监控的。比如说磁盘使用量,CPU 占用率,Memcached 内存使用量,这些可以设置阀值,如果超过了就给我们发邮件。感觉还是比较方便。

96

Awesome!

15290

感谢分享。

533

#34楼 @loveltyoic 用newrelic-grape这个gem,不过这个gem写得不是很好,newrelic的开发也和这个gem的作者提过了,应该又改进的空间。

7294

#38楼 @manageyp #39楼 @benzheren 谢楼上两位,已经在用了。

96

真心神器,一直不断的根据newrelic数据指定优化开发的工作优先级,绝对是必备的

501

app server time 是指服务器消耗的时间? 从请求到返回数据这一过程吗?还有503ms 是指整个请求仅消耗了不到1秒吗?

12435

#35楼 @outman 谢谢提示,我也打算使用这货来监控我们的服务器了,不过,数据存在5分钟的延迟啊。如何处理。

13837

免费版本的NewRelic,只能查看过去24小时的数据,升级到付费帐号,可以查看所有的历史数据。 这一点很不爽阿

15615

如果在企业产品中应用,自然是要购买!个人学习,1天足够了。

96

问一下 这个web 和 数据库的监控 怎么配出来的?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册