Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Server 当内存达到88%时,服务器崩溃_Server_Monitoring_Digital Ocean_Pm2_Angular Universal - Fatal编程技术网

Server 当内存达到88%时,服务器崩溃

Server 当内存达到88%时,服务器崩溃,server,monitoring,digital-ocean,pm2,angular-universal,Server,Monitoring,Digital Ocean,Pm2,Angular Universal,我在一个8GB内存/80GB磁盘/Ubuntu16.04.3x64/4vCPU的数字海洋中使用服务器端渲染,使用Angular universal和PM2作为进程管理器 我使用6GB交换文件,“free-m”时的可用内存如下所示: total used free shared buff/cache available Mem: 7983 1356 5290 16 1335

我在一个8GB内存/80GB磁盘/Ubuntu16.04.3x64/4vCPU的数字海洋中使用服务器端渲染,使用Angular universal和PM2作为进程管理器

我使用6GB交换文件,“free-m”时的可用内存如下所示:

          total    used        free      shared  buff/cache   available
Mem:       7983    1356        5290          16        1335        6278
Swap:      6143      88        6055
天气看起来很好。共有4个流程采用PM2集群模式

每隔6-8小时,当我的Digital Ocean panel中的内存达到~88%时,CPU就会变得非常高,web应用程序无法正确响应,PM2必须重新启动进程,不确定web应用程序的正常工作时间

以下是发生的情况的图像:

正常工作时性能良好:

我想我缺少了某种配置或其他东西,因为这种情况总是在同一时间段发生

EDIT1到目前为止,我修复了代码中的一些不兼容之处(应用程序正在运行,但有时会因此而失败),并添加了1GB。我不确定这是否是一种方式,因为我对流程管理有点陌生,但CPU级别现在已经很好了。如有任何评论,我们将不胜感激。我留下了当前行为的图片,每当四个进程中的一个达到1GB时,它就会重新启动:

EDIT2我又添加了3张图像,其中2张显示Digital Ocean的顶级流程,另一张显示Keymetrics状态:

EDIT3我从Angular应用程序中发现了一些内存泄漏(我忘记取消订阅了几个订阅),系统行为得到了改善,但内存线仍在上升。我将继续调查Angular中的内存泄漏,并查看是否犯了其他错误:


看起来您的Angular Universal应用程序正在泄漏内存,根据您的观察,它不应该随着时间的推移而增加,而应该基本保持不变

您可以尝试查找内存泄漏(看起来您已经发现了一个问题,并且怀疑它可能是什么)

你可以尝试的另一件事是定期重启你的应用程序。 例如,请参阅如何每隔几个小时重新启动pm2进程,以重置和防止您遇到的OOM情况。

在我们的(edge)案例中,kubernetes healthcheck是问题的原因。healthcheck通过内部IP访问主页。页面使用调用者URL(在本例中为其IP)加载一些它无法找到的资源。这会导致一个错误,并以某种方式被缓存,慢慢耗尽所有内存。由于健康检查的规律性,即使在夜间,我们的记忆力也有同样的线性增长


我们通过允许healthcheck调用“/health”来解决这个问题,在这里我们只返回200码。。你能看看
/var/log/messages
中是否有有用的东西吗?您是否看到系统杀死了内存不足(OOM)的进程?当重启发生时,哪个应用程序正在使用CPU?我在/var/log中没有该文件,但在kernel.log和syslog中我只有“[UFW BLOCK]”消息。从内存中取出的进程(来自digital ocean Top进程)是:“node/var/www/name of The app”。我再附上3张图片:digital ocean和Keymetrics面板的顶级进程内存经常重启“正常”吗?不,绝对不正常。看看“角度通用”和内存泄漏,也许会产生一些结果。谢谢,我认为问题来自“角度内存泄漏”。我没有取消几次订阅。现在我做得更好了,但是记忆线一直在上升,我用另一张图片更新了帖子。既然你指出了这个问题,我会给你奖励,但是你能告诉我你是否知道我可以从哪里了解到这个问题吗?或者关于预期内存行为以及何时升级服务器的任何信息?我找不到任何与“记忆正常行为”相关的信息。这条线应该总是水平的,有起伏吗?