我目前正在使用node.js运行pm2。
最近,我能够使用pm2 monit命令检查“自定义度量”。
这里显示了堆大小、使用的堆大小和活动请求等信息。
我不知道堆大小是如何确定的。实际上,我检查了运行在不同服务器上的pm2。
每个堆被设置为95mib / 55mib,因此,所使用的堆大小是不同的。
此外,堆的使用是否更接近100%?
在搜索"StackOverflow“以查找相关信息时,我看到了以下文章。
What does Heap Usage mean in PM2
什么是主动请求?它是连续的零。
谢谢!
编辑
环境: ubuntu18.04 ec2 -t3.微
节点版本: v10.15
附加内容
服务器内存: 1GB 40~50%使用
cpu :使用vCPU (2) 1~2%
发布于 2020-10-10 15:42:51
堆是您要求PM2管理和监视的程序所使用的RAM。当程序创建对象并在垃圾收集时释放时,将分配Javascript和类似语言运行时的堆空间。运行时要求操作系统在需要时提供更多的堆空间:当活动分配超过空闲空间时。因此,随着程序的启动,堆的大小可能会增加。这很正常。
大多数程序在执行任务时分配和释放大量对象,因此不应该试图优化堆的%使用率。当您的程序处于稳定状态(即启动后)时,您将发现%利用率在缓慢上升,直到垃圾回收发生,然后再下降。例如,nodejs/express服务器为每个传入请求分配req
和res
对象,然后使用它们,然后删除它们,以便垃圾收集器可以回收它们的内存。
如果您分配的堆大小持续增长,超过几分钟或几个小时,您可能会出现内存泄漏。这是一个编程错误:一个你应该尽力解决的问题。您应该查找应用程序语言是如何工作的。除此之外,不要太担心堆的使用。
活动请求计算通过各种异步对象(如文件编写器和TCP连接)完成的工作。除非你的程序很忙,否则它会保持在零附近。
如果您的程序进行计算,请密切关注循环延迟。如果它爬起来了,一些计算函数就会占用Javascript。
https://stackoverflow.com/questions/64256883
复制相似问题