我有一个使用Node.js和Redis在Heroku上运行的非常简单的应用程序。它通过Ajax POST定期接收数据,并将数据存储到Redis列表中。
我在本地运行该应用程序时没有问题,在不抱怨的情况下将发送的数据记录到Redis中。但是,当我在Heroku上运行它时,大约在5-10个请求后它就会崩溃,并显示一个相当不明确的Redis错误。
依赖项:
我收到的错误如下所示:
我在本地运行该应用程序时没有问题,在不抱怨的情况下将发送的数据记录到Redis中。但是,当我在Heroku上运行它时,大约在5-10个请求后它就会崩溃,并显示一个相当不明确的Redis错误。
依赖项:
"redis": "~0.7.1",
"hiredis": "~0.1.14",
"redis-url": "~0.1.0"
将代码写入Redis(Coffeescript):
app.post '/track', (req, res) ->
redis = require('redis-url').connect(app.settings.redis_url)
if(req.body.userid)
key = "locations:#{req.body.userid}"
redis.rpush key, JSON.stringify({time: (new Date()).toString(), lat: req.body.latitude, lon: req.body.longitude})
我收到的错误如下所示:
Error: Uncaught, unspecified 'error' event.
2012-04-21T06:12:00+00:00 app[web.1]: at Command.callback (/app/node_modules/redis/index.js:159:29)
2012-04-21T06:12:00+00:00 app[web.1]: at HiredisReplyParser.<anonymous> (/app/node_modules/redis/index.js:256:14)
2012-04-21T06:12:00+00:00 app[web.1]: at RedisClient.return_error (/app/node_modules/redis/index.js:446:25)
2012-04-21T06:12:00+00:00 app[web.1]: at HiredisReplyParser.execute (/app/node_modules/redis/lib/parser/hiredis.js:41:18)
2012-04-21T06:12:00+00:00 app[web.1]: at HiredisReplyParser.emit (events.js:67:17)
2012-04-21T06:12:00+00:00 app[web.1]: at RedisClient.on_data (/app/node_modules/redis/index.js:422:27)
2012-04-21T06:12:00+00:00 app[web.1]: at Socket.emit (events.js:67:17)
2012-04-21T06:12:00+00:00 app[web.1]: at Socket.<anonymous> (/app/node_modules/redis/index.js:66:14)
2012-04-21T06:12:00+00:00 app[web.1]: at TCP.onread (net.js:367:14)
这会导致应用程序崩溃,Heroku最终会再次启动它,但在几个请求之内很快又会崩溃。
有人以前遇到过这种情况吗?我对node/redis相当新,所以这可能是显而易见的问题。奇怪的是,它在本地可以愉快地运行相当长时间,但在Heroku上却像这样死亡...
谢谢!