【nodejs 作为服务器修改最大堆内存】

nodejs 作为服务器修改最大堆内存

  • 查看node服务内存使用情况
  • 修改内存的最大值
    • 使用Node.js的 ​--max-old-space-size​标志来设置堆内存的最大值
    • 要查看Node.js应用程序的当前堆内存最大值
    • 如果希望在应用程序运行时动态修改堆内存的最大值
    • 如果使用pm2作为启动器:

查看node服务内存使用情况

查看node应用列表

pm2 list

结果:

id name mode status cpu memory
1 app fork 211 stopped 0% 0b
2 my-app fork 0 online 0% 0b

找到你先查看的项目 ,找到 script args ,这个就是最大值

在使用PM2管理Node.js进程时,默认情况下,PM2不会限制Node.js进程的最大堆内存值。这意味着,Node.js进程可以使用系统中可用的所有内存。

pm2 show 2

结果:

 Describing process with id 2 - name my-app 
┌───────────────────┬──────────────────────────────────┐
│ status            │ online                           │
│ name              │ my-app                           │
│ namespace         │ default                          │
│ version           │ 1.0.0                            │
│ restarts          │ 0                                │
│ uptime            │ 15s                              │
│ script path       │ /nodeJS/espot-middleware/app.js  │
│ ***script args***--max-old-space-size=2048        │
│ error log path    │ /root/.pm2/logs/my-app-error.log │
│ out log path      │ /root/.pm2/logs/my-app-out.log   │
│ pid path          │ /root/.pm2/pids/my-app-2.pid     │
│ interpreter       │ node                             │
│ interpreter args  │ N/A                              │
│ script id         │ 2                                │
│ exec cwd          │ /nodeJS/espot-middleware         │
│ exec mode         │ fork_mode                        │
│ node.js version   │ 16.14.0                          │
│ node env          │ N/A                              │
│ watch & reload    │ ✘                                │
│ unstable restarts │ 0                                │
│ created at        │ 2023-06-05T11:05:08.510Z         │
└───────────────────┴──────────────────────────────────┘

 Actions available 
┌────────────────────────┐
│ km:heapdump            │
│ km:cpu:profiling:start │
│ km:cpu:profiling:stop  │
│ km:heap:sampling:start │
│ km:heap:sampling:stop  │
└────────────────────────┘
 Trigger via: pm2 trigger my-app <action_name>

 Code metrics value 
┌────────────────────────┬───────────┐
│ Heap Size              │ 60.93 MiB │
│ Heap Usage             │ 45.41 %   │
│ Used Heap Size         │ 27.67 MiB │
│ Active requests        │ 0         │
│ Active handles         │ 6         │
│ Event Loop Latency     │ -0.05 ms  │
│ Event Loop Latency p95 │ 0.88 ms   │
└────────────────────────┴───────────┘
 Divergent env variables from local env 


 Add your own code metrics: http://bit.ly/code-metrics
 Use `pm2 logs my-app [--lines 1000]` to display logs
 Use `pm2 env 2` to display environment variables
 Use `pm2 monit` to monitor CPU and Memory usage my-app

修改内存的最大值

使用Node.js的 ​–max-old-space-size​标志来设置堆内存的最大值

例如,要将堆内存最大值设置为2GB,您可以使用以下命令:

node --max-old-space-size=2048 app.js

要查看Node.js应用程序的当前堆内存最大值

可以使用 ​process.memoryUsage()​方法。该方法返回一个对象,其中包含有关Node.js进程内存使用情况的信息,包括堆内存使用情况。以下是一个示例代码:

const used = process.memoryUsage();
console.log(`Heap memory maximum: ${used.heapTotal/1024/1024} MB`);

如果希望在应用程序运行时动态修改堆内存的最大值

则可以使用 ​v8​模块中的 ​setFlagsFromString()​方法。以下是一个示例代码:

const v8 = require('v8');
const maxHeapSize = 2048; // 2GB
v8.setFlagsFromString(`--max-old-space-size=${maxHeapSize}`);

如果使用pm2作为启动器:

增加ecosystem.config.js 文件在根目录

module.exports = {
    apps: [
        {
            name: "my-app",
            script: "./app.js",
            args: ["--max-old-space-size=2048"],
            max_memory_restart: "2G"
        }
    ]
};

max_memory_restart 是修改的最大堆内存 单位为MB或者GB

pm2的启动命令修改为

pm2 start ecosystem.config.js

你可能感兴趣的:(nodeJS,node.js)