欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

在大多數(shù)情況下,如果性能問題只能在生產(chǎn)系統(tǒng)重現(xiàn),那么這種問題分析起來確實很棘手,因為我們需要相同的環(huán)境配置、相同的數(shù)據(jù)庫、緩存等數(shù)據(jù)。 性能問題可能只針對某些類別的用戶,因為他們有特定的數(shù)據(jù)。

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

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

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

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

代碼如下:

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 包裹,因為我們不需要等到錄制結(jié)束。 讓我們用 curl 測試一下:

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

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

如果不想將此功能添加為 HTTP 端點,則可以將它們包裝在進程信號處理程序中,如下所示:

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ā)送信號:

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

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

相關(guān)文章

  • node.js中實現(xiàn)雙重身份驗證機制的方法詳解

    node.js中實現(xiàn)雙重身份驗證機制的方法詳解

    雙重身份驗證(Two-factor?authentication)是一種安全機制,它要求用戶提供兩種不同的身份驗證因素來訪問他們的帳戶,下面我們就來學(xué)習(xí)一下如何使用speakeasy在nodejs中實現(xiàn)雙重身份驗證吧
    2023-10-10
  • NodeJS模塊與ES6模塊系統(tǒng)語法及注意點詳解

    NodeJS模塊與ES6模塊系統(tǒng)語法及注意點詳解

    這篇文章主要給大家介紹了關(guān)于NodeJS模塊與ES6模塊系統(tǒng)語法及注意點的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • Windows安裝Node.js報錯:2503、2502的解決方法

    Windows安裝Node.js報錯:2503、2502的解決方法

    這篇文章主要給大家介紹了關(guān)于在Windows系統(tǒng)下安裝Node.js報錯:2503、2502的解決方法,文中將解決的方法一步步介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • Node.js中的模塊化,npm包管理器詳解

    Node.js中的模塊化,npm包管理器詳解

    這篇文章主要介紹了node模塊與npm包管理工具,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-09-09
  • Node.js+Express.js+TS實現(xiàn)簡單圖床腳本

    Node.js+Express.js+TS實現(xiàn)簡單圖床腳本

    在這篇博客文章中,我將介紹如何使用 TypeScript 和 Express 框架來編寫一個簡單的圖床腳本,可以將本地圖片上傳到服務(wù)器,并返回圖片的 URL,這樣,你就可以在 Markdown 文檔中方便地引用圖片,而不用擔(dān)心圖片的存儲和管理問題
    2023-10-10
  • 快速了解Node中的Stream流是什么

    快速了解Node中的Stream流是什么

    今天小編就為大家分享一篇關(guān)于快速了解Node中的Stream流是什么,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • 詳解nodejs中的process進程

    詳解nodejs中的process進程

    這篇文章主要介紹了nodejs中的process進程,非常不錯,具有參考借鑒價值,需要的朋友參考下
    2017-03-03
  • 基于node.js之調(diào)試器詳解

    基于node.js之調(diào)試器詳解

    下面小編就為大家?guī)硪黄趎ode.js之調(diào)試器詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • axios基本用法教程示例詳解

    axios基本用法教程示例詳解

    這篇文章主要為大家介紹了axios基本用法示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • NodeJs之word文件生成與解析的實現(xiàn)代碼

    NodeJs之word文件生成與解析的實現(xiàn)代碼

    這篇文章主要介紹了NodeJs之word文件生成與解析的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評論