最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Node.js?應(yīng)用高?CPU?占用率分析方法

 更新時(shí)間:2022年10月27日 15:06:21   作者:JerryWang_sap  
這篇文章主要為大家介紹了Node.js?應(yīng)用高?CPU?占用率分析方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

本地運(yùn)行 Node.js 應(yīng)用

我們在本地運(yùn)行 Node.js 應(yīng)用,使用 --inspect 標(biāo)志啟動(dòng)應(yīng)用程序,再次執(zhí)行負(fù)載測試,在 Chrome 瀏覽器中打開 chrome://inspect:

單擊應(yīng)用下方的 inspect 按鈕,然后開始 CPU 占用率分析:

等待一段時(shí)間后,就能看到 CPU profile 的結(jié)果:

如何采集生產(chǎn)系統(tǒng)上的 Node.js 應(yīng)用性能數(shù)據(jù)

在大多數(shù)情況下,如果性能問題只能在生產(chǎn)系統(tǒng)重現(xiàn),那么這種問題分析起來確實(shí)很棘手,因?yàn)槲覀冃枰嗤沫h(huán)境配置、相同的數(shù)據(jù)庫、緩存等數(shù)據(jù)。 性能問題可能只針對某些類別的用戶,因?yàn)樗麄冇刑囟ǖ臄?shù)據(jù)。

在生產(chǎn)環(huán)境開啟調(diào)試模式?這不是一個(gè)好的選擇,因?yàn)樵谡{(diào)試模式下 Node.js 進(jìn)程會(huì)消耗更多資源,而且不安全。

但是有一個(gè)更好的方法,使用檢查器模塊 nodejs.org/api/inspect… 按需獲取配置文件。 它是一個(gè) Node.js 內(nèi)置模塊,開發(fā)人員不必安裝任何額外的依賴項(xiàng),但建議使用 inspector-api .

它是一個(gè)帶有 Promise 支持的簡單包裝器。 讓我們創(chuàng)建一個(gè)記錄 CPU 配置文件的端點(diǎn)。

下面是為 NestJS 創(chuàng)建一個(gè)示例,對于其他框架,它看起來非常相似:

代碼如下:

import { Controller, Post } from '@nestjs/common'
import { promisify } from 'util'
import Inspector from 'inspector-api'
const profileRecordTime = 10000
@Controller('/profile')
export class ProfileController {
  @Post('/cpu')
  async cpu() {
    // don't wait till recording is finished
    setImmediate(async () => {
      // cpu profile will be saved in temp dir
      const inspector = new Inspector({ storage: { type: 'fs' } })
      // enabling and starting profiling
      await inspector.profiler.enable()
      await inspector.profiler.start()
      // wait for 10 seconds and stop
      await promisify(setTimeout)(profileRecordTime)
      await inspector.profiler.stop()
      console.log('CPU profile has been written')
      await inspector.profiler.disable()
    })
    return true
  }
}

所有代碼都用 setImmediate 包裹,因?yàn)槲覀儾恍枰鹊戒浿平Y(jié)束。 讓我們用 curl 測試一下:

curl -X POST http://127.0.0.1/profile/cpu

10 秒之后,我們在 temp 文件夾得到了 CPU profile 的采集結(jié)果:

如果不想將此功能添加為 HTTP 端點(diǎn),則可以將它們包裝在進(jìn)程信號(hào)處理程序中,如下所示:

import { promisify } from 'util'
import Inspector from 'inspector-api'
const profileRecordTime = 10000
process.on('SIGUSR1', async () => {
  const inspector = new Inspector({ storage: { type: 'fs' } })
  await inspector.profiler.enable()
  await inspector.profiler.start()
  await promisify(setTimeout)(profileRecordTime)
  await inspector.profiler.stop()
  console.log('CPU profile has been written')
  await inspector.profiler.disable()
})
process.on('SIGUSR2', async () => {
  const inspector = new Inspector({ storage: { type: 'fs' } })
  await inspector.heap.enable()
  await inspector.heap.startSampling()
  await promisify(setTimeout)(profileRecordTime)
  await inspector.heap.stopSampling()
  console.log('CPU profile has been written')
  await inspector.heap.disable()
})

然后使用 kill 命令發(fā)送信號(hào):

  • kill -USR1 ${pid} // for CPU
  • kill -USR2 ${pid} // for Heap

以上就是詳解Node.js 應(yīng)用高 CPU 占用率分析方法的詳細(xì)內(nèi)容,更多關(guān)于Node.js 應(yīng)用高 CPU 占用率的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 快速查詢nodejs版本信息的六種方法

    快速查詢nodejs版本信息的六種方法

    Node.js是一款基于Chrome V8引擎的快速、輕量級(jí)的JavaScript運(yùn)行時(shí),隨著應(yīng)用程序規(guī)模越來越龐大,Node.js版本的更新也日益頻繁,這篇文章旨在幫助開發(fā)者們快速查詢Node.js版本信息,需要的朋友可以參考下
    2023-11-11
  • node.js連接mongoose數(shù)據(jù)庫方法詳解

    node.js連接mongoose數(shù)據(jù)庫方法詳解

    之前我們都是通過shell來完成對數(shù)據(jù)庫的各種操作的,在開發(fā)中大部分時(shí)候我們都需要通過程序來完成對數(shù)據(jù)庫的操作。而Mongoose就是一個(gè)讓我們可以通過Node來操作MongoDB的模塊
    2022-08-08
  • 從零開始學(xué)習(xí)Node.js

    從零開始學(xué)習(xí)Node.js

    這篇文章主要介紹了從零開始學(xué)習(xí)Node.js結(jié)合具體實(shí)例形式分析了使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-09-09
  • Node.js返回JSONP詳解

    Node.js返回JSONP詳解

    下面小編就為大家?guī)硪黄狽ode.js返回JSONP詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-05-05
  • node.js實(shí)現(xiàn)微信JS-API封裝接口的示例代碼

    node.js實(shí)現(xiàn)微信JS-API封裝接口的示例代碼

    這篇文章主要介紹了node.js實(shí)現(xiàn)微信JS-API封裝接口的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • node_modules文件夾刪除失敗的有效解決辦法

    node_modules文件夾刪除失敗的有效解決辦法

    在前端開發(fā)過程中,node_modules文件夾是一個(gè)必不可少的組成部分,里面存放著項(xiàng)目所需的各種依賴包,在實(shí)際操作中,很多開發(fā)者可能會(huì)遇到刪除 node_modules 文件夾失敗的問題,本文將詳細(xì)介紹一種簡單有效的解決辦法,幫助你順利刪除node_modules文件夾,需要的朋友可以參考下
    2024-12-12
  • koa2上傳文件及https配置實(shí)現(xiàn)教程

    koa2上傳文件及https配置實(shí)現(xiàn)教程

    這篇文章主要為大家介紹了koa2上傳文件及https配置實(shí)現(xiàn)教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 詳解如何在Node.js的httpServer中接收前端發(fā)送的arraybuffer數(shù)據(jù)

    詳解如何在Node.js的httpServer中接收前端發(fā)送的arraybuffer數(shù)據(jù)

    這篇文章主要介紹了詳解如何在Node.js的httpServer中接收前端發(fā)送的arraybuffer數(shù)據(jù),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • 詳解NODEJS基于FFMPEG視頻推流測試

    詳解NODEJS基于FFMPEG視頻推流測試

    本篇文章主要介紹了詳解NODEJS基于FFMPEG視頻推流測試,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • package.json版本號(hào)符號(hào)^和~前綴的區(qū)別

    package.json版本號(hào)符號(hào)^和~前綴的區(qū)別

    這篇文章介紹了package.json版本號(hào)符號(hào)^和~前綴的區(qū)別,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06

最新評(píng)論

虎林市| 巴林右旗| 仲巴县| 庄浪县| 达拉特旗| 额尔古纳市| 大城县| 巫溪县| 襄垣县| 开江县| 会东县| 平遥县| 岚皋县| 乌兰县| 汾西县| 汪清县| 敦化市| 清新县| 青浦区| 潮安县| 武义县| 益阳市| 含山县| 渑池县| 二连浩特市| 南漳县| 阿勒泰市| 丰顺县| 五峰| 门源| 乌拉特中旗| 玉田县| 陵川县| 正蓝旗| 安义县| 安新县| 武冈市| 平谷区| 湘潭市| 响水县| 松溪县|