1
2012-07-20T03:04:50+00:00 heroku[web.1]: Process running mem=546M(106.8%)
2012-07-20T03:04:50+00:00 heroku[web.1]: Error R14 (Memory quota exceeded)
2012-07-20T03:05:11+00:00 heroku[web.1]: Process running mem=583M(113.9%)
2012-07-20T03:05:11+00:00 heroku[web.1]: Error R14 (Memory quota exceeded)
2012-07-20T03:05:30+00:00 heroku[web.1]: Process running mem=611M(119.4%)
2012-07-20T03:05:30+00:00 heroku[web.1]: Error R14 (Memory quota exceeded)
2012-07-20T03:05:50+00:00 heroku[web.1]: Process running mem=611M(119.4%)
2012-07-20T03:05:50+00:00 heroku[web.1]: Error R14 (Memory quota exceeded)
2012-07-20T03:06:10+00:00 heroku[web.1]: Process running mem=605M(118.3%)
2012-07-20T03:06:10+00:00 heroku[web.1]: Error R14 (Memory quota exceeded)
2012-07-20T03:06:30+00:00 heroku[web.1]: Process running mem=689M(134.6%)
2012-07-20T03:06:30+00:00 heroku[web.1]: Error R14 (Memory quota exceeded)
2012-07-20T03:06:37+00:00 heroku[router]: Error H12 (Request timeout) -> POST vivid-night-1834.herokuapp.com/ dyno=web.1 queue= wait= service=30000ms status=503 bytes=0
2012-07-20T03:06:51+00:00 heroku[web.1]: Process running mem=909M(177.7%)
2012-07-20T03:06:51+00:00 heroku[web.1]: Error R14 (Memory quota exceeded)
2012-07-20T03:07:10+00:00 heroku[web.1]: Process running mem=909M(177.7%)

查看进程内存不足的速度。我运行了 heroku restart ,它仍然在一秒钟后发生。

我有一个 node.js 应用程序,过去几天我一直在毫无困难地工作。它进行了一些 mongodb 调用,一些 redis 调用,但 redis 和 mongo 中的数据总量可能低于 50kb。

我如何追踪问题?

4

2 回答 2

2

看看你在它工作时和现在之间所做的改变,也许?

没有看到代码,很难说问题可能是什么,除了你显然在做一些事情来一遍又一遍地分配内存,所以这要么是一个循环,要么是一个没有正确退出的递归函数调用健康)状况。

于 2012-07-20T03:28:51.923 回答
2

即使这是您的循环,但内存配额超出是大多数开发人员在使用 heroku 时面临的常见问题。它与 Node 的垃圾收集器有关。我把我的答案放在这里是为了帮助那些可能一直在寻找同样问题的人。

Node (V8) 使用懒惰和贪婪的垃圾收集器。由于其默认限制约为 1.5 GB,它有时会等到绝对需要时才回收未使用的内存。如果您的内存使用量在增加,则可能不是泄漏——而是节点通常的惰性行为。为了更好地控制你的应用程序的垃圾收集器,你可以在你的Procfile:

如果您的应用程序在可用内存不足 1.5 GB 的环境中运行,这一点尤其重要。例如,如果您想将节点定制为 512 MB 容器,请尝试:

web: node --optimize_for_size --max_old_space_size=460 --gc_interval=100 server.js

取自这里https://blog.heroku.com/node-habits-2016

于 2016-07-12T11:19:17.887 回答