NewRelic 是一个老牌的应用性能监测工具,提供 14 天免费试用,本节将讲解如何使用 NewRelic 监控 Node.js 程序的性能。

测试代码如下:

app.js

require('newrelic')

const crypto = require('crypto')
const express = require('express')
const app = express()
const createUser = require('./routes/users').createUser

app.get('/', (req, res) => {
  const salt = crypto.randomBytes(128).toString('base64')
  const hash = crypto.pbkdf2Sync(String(Math.random()), salt, 10000, 512, 'sha512').toString('hex')
  res.json({ salt, hash })
})

app.get('/error', (req, res, next) => {
  next(new Error('error!!!'))
})

app.post('/users/:user', async (req, res) => {
  const user = await createUser(req.params.user, 18)
  res.json(user)
})

app.listen(3000)

routes/users.js

const Mongolass = require('mongolass')
const mongolass = new Mongolass('mongodb://localhost:27017/test')
const User = mongolass.model('User')

exports.createUser = async function (ctx) {
  const name = ctx.query.name || 'default'
  const age = +ctx.query.age || 18
  const user = await createUser(name, age)
  ctx.status = user
}

async function createUser (name, age) {
  const user = (await User.create({
    name,
    age
  })).ops[0]
  return user
}

码农进阶题库 - 每天一道面试题 or Js小知识@Js中文网

每天弄懂一道面试题(Javascript小知识)来鞭策自己学习思考,每天进步一点,帮助你提高你的代码编写质量

5.1.1 使用 NewRelic

首先,注册一个 NewRelic 账号。创建一个应用,如下所示:

选择 APM,进入下一步,选择 Node.js 应用,并拿到 license key:

在 Node.js 中使用 NewRelic 的步骤如下:

$ npm i newrelic --save # 安装 NewRelic 的 Node.js SDK
$ cp node_modules/newrelic/newrelic.js . # 将默认配置文件拷贝到项目根目录下

修改 newrelic.js,app_name 填写我们的应用名(例如:api),license_key 填写刚才生成的 license key。

启动测试程序,并发起几个请求,稍等几分钟,NewRelic 的后台将会收到并展示一些数据(例如:吞吐量,请求的 Urls,错误率、Apdex score 等),如下所示:

试用版的功能有限,升级到付费版可解锁更多功能,例如:数据库分析、错误分析甚至 Node.js VM 监控(CPU、内存、GC、Event Loop)等等。

类似的其他 APM 有:

用法大同小异,这里就不一一介绍了。

5.1.2 参考链接

上一节:4.5 supervisor-hot-reload

下一节:5.2 Elastic APM

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「IT平头哥联盟」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程

JS中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。欢迎热爱技术的你一起加入交流与学习,JS中文网的使命是帮助开发者用代码改变世界

results matching ""

    No results matching ""