node.js 堆内存和已用堆大小 [pm2]
node.js heap memory and used heap size [pm2]
我目前 运行 node.js 使用 pm2。
最近,我能够使用 pm2 monit 命令检查“自定义指标”。
此处显示堆大小、已用堆大小和活动请求等信息。
我不知道堆大小是如何确定的。实际上,我在不同的服务器上检查了 pm2 运行。
每个都设置为 95mib / 55mib,因此,使用的堆大小不同。
另外,堆使用率是不是越接近100%越好?
在“Whosebug”上搜索相关资料时,看到了以下文章。
What does Heap Usage mean in PM2
另外,活跃请求是什么意思?它连续为零。
谢谢!
[编辑]
环境:ubuntu18.04 [ec2-t3.micro]
节点版本:v10.15
[额外]
服务器内存:1GB [已使用 40~50%]
cpu:vCPU (2) [已使用 1~2%]
堆是您要求 PM2 管理和监控的程序使用的 RAM。在 Javascript 和类似的语言运行时中,堆 space 在您的程序创建对象时分配,并在垃圾收集时释放。您的运行时会在需要时向您的 OS 请求更多堆 space:当活动分配超过空闲 space 时。所以你的堆大小可能会随着你的程序启动而增长。这很正常。
大多数程序在工作时会分配和释放大量对象,因此您不应尝试优化堆的使用百分比。当您的程序 运行 处于稳定状态时——也就是说,在它启动之后——您会发现 % 利用率逐渐上升,直到垃圾收集发生,然后回落。例如,nodejs/express 网络服务器为每个传入请求分配 req
和 res
对象,然后使用它们,然后丢弃它们以便垃圾收集器可以回收它们的 RAM。
如果您分配的堆大小在几分钟或几小时内持续增长,您可能有 内存泄漏。这是一个编程错误:您应该尽力解决的问题.您应该查看它如何适用于您的应用程序语言。除此之外,不要太担心堆的使用。
活动请求计数通过各种异步对象(如文件编写器和 TCP 连接)完成的工作。除非您的程序非常繁忙,否则它会保持在接近零的水平。
如果您的程序进行计算,请留意循环延迟。如果它爬起来,一些计算函数正在占用 Javascript。
我目前 运行 node.js 使用 pm2。
最近,我能够使用 pm2 monit 命令检查“自定义指标”。
此处显示堆大小、已用堆大小和活动请求等信息。
我不知道堆大小是如何确定的。实际上,我在不同的服务器上检查了 pm2 运行。
每个都设置为 95mib / 55mib,因此,使用的堆大小不同。
另外,堆使用率是不是越接近100%越好?
在“Whosebug”上搜索相关资料时,看到了以下文章。
What does Heap Usage mean in PM2
另外,活跃请求是什么意思?它连续为零。
谢谢!
[编辑]
环境:ubuntu18.04 [ec2-t3.micro]
节点版本:v10.15
[额外]
服务器内存:1GB [已使用 40~50%]
cpu:vCPU (2) [已使用 1~2%]
堆是您要求 PM2 管理和监控的程序使用的 RAM。在 Javascript 和类似的语言运行时中,堆 space 在您的程序创建对象时分配,并在垃圾收集时释放。您的运行时会在需要时向您的 OS 请求更多堆 space:当活动分配超过空闲 space 时。所以你的堆大小可能会随着你的程序启动而增长。这很正常。
大多数程序在工作时会分配和释放大量对象,因此您不应尝试优化堆的使用百分比。当您的程序 运行 处于稳定状态时——也就是说,在它启动之后——您会发现 % 利用率逐渐上升,直到垃圾收集发生,然后回落。例如,nodejs/express 网络服务器为每个传入请求分配 req
和 res
对象,然后使用它们,然后丢弃它们以便垃圾收集器可以回收它们的 RAM。
如果您分配的堆大小在几分钟或几小时内持续增长,您可能有 内存泄漏。这是一个编程错误:您应该尽力解决的问题.您应该查看它如何适用于您的应用程序语言。除此之外,不要太担心堆的使用。
活动请求计数通过各种异步对象(如文件编写器和 TCP 连接)完成的工作。除非您的程序非常繁忙,否则它会保持在接近零的水平。
如果您的程序进行计算,请留意循环延迟。如果它爬起来,一些计算函数正在占用 Javascript。