利用 new relic 监控 express 项目

标签: 利用 new relic | 发表时间:2014-08-27 21:53 | 作者:snoopyxdy
出处:http://snoopyxdy.blog.163.com
最近一个偶然的机会了解到代码剖析分析,何为剖析,我也解释不好就介绍下它的作用,通过作用来理解吧。
比如一个新项目上线,有许多功能,作为开发者和运维人员是不是很想知道各个功能点运行的怎么样,是否有内存泄露,响应是否迅速,各个功能点用户使用的频率等等信息呢?另外如果发现了某一个功能使用起来特别慢,那我们能快速定位到,到底是数据库执行慢,还是代码性能问题,又或者是服务器内存不足频繁交换引起的呢?
想要全方位了解自己的应用在服务器上的运行情况就需要代码剖析,如果交给我们自己设计,恐怕就是在各个可能出问题的地方做钩子,记录运行时间,存入数据库或者写入日志服务器。现在这一切都不用我们自己来操心了,只需要几行代码就可以把这些工作交给 new relic 来做掉。
new relic 就是这样一个应用管理和监控软件,他目前支持很多主流语言,我用的是python和node.js的支持,他支持node.js的express框架,而且用起来非常简单,只需要4步:
1、创建一个 new relic 帐号,免费的哦,不过只能记录24小时的数据
2、安装newrelic包,
    

npm install newrelic

或者在package.json的写入:(写本文时最高版本是1.10.2)
    

 "dependencies": {
       ...
       "newrelic":"1.10.2"
   },

3、把node_modules/newrelic/newrelic.js 拷贝到项目根目录,然后修改其中的几个值如下:
     

/**
 * New Relic 客户配置文件.
 *
 * 参考 lib/config.defaults.js 获得更多的配置.
 */
exports.config = {
  /**
   * 应用名称数组,取一个喜欢的名字
   */
  app_name : ['My Application'],
  /**
   * 你的 New Relic 授权 key,在个人中心里把key拷贝进去
   */
  license_key : 'license key here',
  logging : {
    /**
     * 日志等级. 'trace' 对于 New Relic 诊断问题时是最有用的
     * 'info' 级别以及更高的应该应用于生产应用
     */
    level : 'info'
  }
};

4、在根目录的app.js中的第一行拷贝加载模块代码:
    

require('newrelic');

执行完以上4步,等待5分钟就可以在new relic后台看到应用的数据了。

1、后台统计总图,最大的图表示事务的平均响应时间,右上角是应用性能指数(apdex score)蓝色表示优异(0.94分以上),绿色表示好,红色表示一般,又下角是系统吞吐率,rpm表示每分钟处理请求数。

利用 new relic 监控 express 项目 - snoopyxdy - snoopyxdy的博客
 
 2、系统用到的各个应用图,这里我就用到了recmember应用和database数据库,时间表示平均响应时间
利用 new relic 监控 express 项目 - snoopyxdy - snoopyxdy的博客
 3、表示应用花费大部分处理的请求url地址,优化这部分功能可以最有效的提高系统吞吐率
利用 new relic 监控 express 项目 - snoopyxdy - snoopyxdy的博客
 
4、下面是用户请求 /view/user/regist 获得注册页面功能的所有耗时和调用次数以及耗时百分比,简单分析一下下图,
因为如果用户是已经注册,则会响应 user_modify.ejs 所以我们看到了会渲染2个view,我们看到这个功能耗时最多的是渲染
user_regist.ejs 这个模版,占据了功能点的43%的时间消耗,所以应该特别优化这部分最有效果。
利用 new relic 监控 express 项目 - snoopyxdy - snoopyxdy的博客
 5、下图是所有数据库操作中平均响应时间最长的
利用 new relic 监控 express 项目 - snoopyxdy - snoopyxdy的博客
 6、点击 insert 操作,我们看到这个操作被调用的时间以及控制器调用此操作的执行时间百分比。
利用 new relic 监控 express 项目 - snoopyxdy - snoopyxdy的博客
 
通过new relic的后台提供的数据,我们可以清楚的监控整个应用是否健康的运行,哪里值得优化,对什么地方优化能够得到最大的系统吞吐率提升。
最后不得不说new relic包的安全问题,可能有朋友会说,这个包会不会留后门,我的服务器会不会成为肉鸡,代码会不会泄露,这个我也无法保证,但是至少要保证运行nodejs程序的权限不要用root。


相关 [利用 new relic] 推荐:

利用 new relic 监控 express 项目

- - snoopyxdy的博客
最近一个偶然的机会了解到代码剖析分析,何为剖析,我也解释不好就介绍下它的作用,通过作用来理解吧. 比如一个新项目上线,有许多功能,作为开发者和运维人员是不是很想知道各个功能点运行的怎么样,是否有内存泄露,响应是否迅速,各个功能点用户使用的频率等等信息呢. 另外如果发现了某一个功能使用起来特别慢,那我们能快速定位到,到底是数据库执行慢,还是代码性能问题,又或者是服务器内存不足频繁交换引起的呢.

Hibernate调优之select new map()

- - CSDN博客架构设计推荐文章
        Hibernate调优不只是设置一下lazy,调整一下由谁来维护这个字段而已.         这次要说的是对查询语句进行优化——select new map().         select new map语句结果说明.         语句一:.         结果list中,每条记录对应一个object数组,object[]中每个元素为hql语句中列的序号(从0开始).

Gnome Shell 主题:New Adwaita-White 及 Black Glass

- Jason - Wow! Ubuntu
两个不错的 Gnome shell 主题,分别为 New Adwaita-White 及 Black Glass. 1 New Adwaita-White :  Gnome shell 默认主题的改进版. #Gnome Shell 主题的安装方法:把下载下来的压缩包解压缩,然后把文件夹名改为 theme,最后复制该文件夹到 /usr/share/gnome-shell/ 就可以了,记得先备份 /usr/share/gnome-shell/theme 文件夹.

Times New Roman字体的历史

- FQX - 东西
Times New Roman可谓无处不在——翻开美国国务院备忘录、《妇女家庭伴侣》的扉页,以及触手可及的收件箱——你会发现,它是世界上使用最广泛的字体. 半个多世纪以来,Times New Roman被归功于印刷界的“泰坦”——斯坦利·莫里森( Stanley Morison). 但在上世纪80年代,一名加拿大印刷工赫然发现,莫里森的Times New Roman可能涉嫌剽窃.

6.60官方固件解包工具New PSARDumper 660

- 夜の猫 - 电玩巴士-PSP频道
  可能对于PSP破解比较熟悉的玩家都听说过New PSARDumper的名字,顾名思义,这款软件是对索尼的官方固件EBOOT.PBP进行解密的工具,自制系统的制作也是基于对官方固件的解密前提下. 由于索尼最新放出的6.60官方升级文件更换了加密方式,导致原有的解包工具无法正确进行解密.   如今,解包工具New PSARDumper更新了660版本,新版本支持6.60官方升级文件的解包,也就是说现在6.60系统的加密方式已经被破解.

苹果公司回应new iPad“发热门”事件

- - 雷锋网
苹果刚销售新产品才几天时间,就立马爆出使用问题,这种情况着实十分罕见. 苹果历来少有集中投诉事件发生,给人留下印象最深刻的一次是iPhone 4的天线接收信号问题,最后苹果承认这个问题确实存在,但解释说并非iPhone 4独有这个瑕疵,其他很多手机都存在这种情况. 现在出现的问题是,new iPad发热情况比iPad 2更严重.

大量new临时对象可以是一种优化手段

- - 为着理想勇敢前进
有C++经验的人往往知道,频繁在堆上分配对象对性能伤害很大. 比如这样的代码就不是好代码:. 然而在JVM(指HotSpot虚拟机)上完全不是这样的. 尽管JVM不提供在栈上创建对象的功能,但JVM会自动通过逃逸分析找出生命周期在函数范围内的临时对象,然后运行时优化这个函数,把对象创建放到栈上. 逃逸分析在JRE7里面已经默认开启了,对临时对象多的代码效果很大.

New TV——深受启发的混合型产品

- tossking - 爱范儿 · Beats of Bits
我们经常听闻:移动互联网正在冲击某个行业:. 对于电视,这个综合型的市场(媒体+硬件)来说,它将是下一个受到冲击的行业吗. 我的观点如下:电视将受到移动互联网的启发,而非冲击. 新的电视(暂且称为 New TV ),将是一个混合型产品. New TV 将有两个屏幕,一个用于播放内容,另一个做延伸的交互.

cassandra节点down机(java.lang.OutOfMemoryError: unable to create new native thread)

- - 大数据、敏捷(改善)
在对集群做压力测试的时候,发现有节点down机,错误信息如下. google后查明原因,由于Linux "max user processes( nproc)"所致,我操作系统的是CentOS 6 64bit,修改方法如下:. ulimit -u # 查看nproc. ulimit -u 65535 # 设置nproc,仅当前会话有效.

好文 - Cache is the new RAM (DB 技術演進史)

- - Tsung's Blog
這篇文章簡單描述了 資料庫的 技術演進 與 解決問題的簡述, 簡單的圖示說明了一切~. 好文 - Cache is the new RAM (DB 技術演進史). 每個時代遇到的問題都不一樣, 資料庫的類型、技術都是為了解決當下的問題而設計, 非常有趣的歷史回顧~. 下述摘錄此文圖片文字敘述: Cache is the new RAM | MemSQL, 詳細說明請回原文觀看..