Tag: heroku

Heroku上的Node.js Web Socket H15空闲连接超时

我们在Heroku上运行Node.js和Express应用程序,使用ws库实现实时web套接字。 下面是我们看到的众多H15超时的屏幕截图。 我读过Heroku在55秒后终止任何空闲连接,但是当连接打开时,我们的套接字每5秒钟来回发送一次乒乓。 下面是一段服务器代码: var _this = this; this.server.on('connection', function(ws){ // check for a ping, respond with pong ws.on('message', function(data){ data = data.toString('utf8'); if (data === PING) { ws.send(PONG); } }); ws.on('close', function(err){ TL.logger.info('Socket closed: '+path); _this.sockets = _.filter(_this.sockets, function(_ws){ return ws != _ws; }); }); ws.on('error', function(err){ TL.logger.info('Socket error: '+path); _this.sockets = _.filter(_this.sockets, function(_ws){ […]

在Heroku上的NodeJS worker重新启动后恢复排队的作业

所以我在Heroku上有一个相当简单的设置。 我正在使用RabbitMQ来处理后台作业。 我的设置由每天使用Heroku Scheduler插件运行的节点脚本组成。 这些脚本将作业添加到队列中,然后工作人员将其消耗并委托给单独的模块进行处理。 我收到一个SIGTERM事件, Heroku不时随机启动,重新启动实例之前,问题就开始了。 出于某种原因,在实例重新启动后,工作人员再也不会恢复。 只有当我通过做heroku ps:scale worker=0和heroku ps:scale worker=1来手动重新启动时,worker才会继续使用未完成的作业。 这是我的工人: // worker.js var throng = require('throng'); var jackrabbit = require('jackrabbit'); var logger = require('logfmt'); var syncService = require('./syncService'); var start = function () { var queue = jackrabbit(process.env.RABBITMQ_BIGWIG_RX_URL || 'amqp://localhost'); logger.log({type: 'msg', msg: 'start', service: 'worker'}); queue .default() .on('drain', onDrain) .queue({name: […]

如何监控heroku上的内存使用情况(node.js)

有Rails 新的遗物 ,但我找不到任何可用的node.js。 是否有任何工具或API来监视heroku dynos的内存使用情况?

Heroku(Cedar)+ Node + Express + Jade子目录中的客户端JavaScript文件在工作时使用foreman + curl,但是当推送到Heroku时

我对节点和heroku很新,我怀疑这是一种简单的许可问题等,但我似乎无法跟踪它。 我在我的web.js文件所在的根目录下的一个子目录中有几个纯JavaScript文件。 我在我的web.js文件中有一行来指定目录 app.use('/heatcanvas',express.static(__dirname+'/heatcanvas')); 如果我使用Heroku Foreman在本地运行我的应用程序,那么在运行以下curl命令时,会得到预期的js响应 curl localhost:5000/heatcanvas/heatcanvas.js 但是,当我推到Heroku,并在浏览器中击中相应的实时url www.example.com/heatcanvas/heatcanvas.js 我收到以下内容: Cannot GET /heatcanvas/heatcanvas.js 如果我检查Firebug和/或Heroku日志,我发现我实际上得到这些文件的404错误,即使path应该匹配在本地完成。 另外值得一提的是,第三方javascript正好过来,只有脚本标记的src属性指向我的网站时才有问题。 我需要做什么才能使我的脚本可用?

Heroku抛出一个错误,如“拒绝拒绝,未经授权的访问。”

我使用GitHub进行代码提交,并将该Git URL集成到Heroku进行部署。 我做了很多次,每次都有效,但是现在这个时候出现了一个错误: 推拒绝,未经授权的访问 我正在使用Node.js 作为后端。 这是我的package.json文件(电子邮件replace): { "name": "wrapperdemo", "version": "1.0.0", "description": "Payment Gatway demo", "scripts": { "start": "node app.js" }, "dependencies": { "express": "~4.13.3", "node-libcurl": "*", "node-jquery-param": "*", "xml2js": "^0.4.17" }, "author": "Gunjan <my-email@example.com>", "license": "ISC" } 错误:

在Heroku的每个部署之后避免npm刷新

我有一个在Heroku上托pipe的Node.js网站,我用git进行部署。 我使用了几个节点模块,在package.json中引用; 有没有一种方法来防止Heroku'刷新'他们每次部署新版本的代码,只要package.json没有改变? 注意:这对于编译需要一些时间的“本地”模块特别有用; 对于.js-only模块,我成功地将它们从package.json中删除,并将它们的node_modules /文件夹添加到git仓库中。

HTTPS Node.js在Heroku上的应用程序

我已经configuration了我的SSL开始,我可以确认这是工作。 当我进入我的日志时,我看到以下内容: Jul 13 08:14:10 support-dash app/web.1: Express server listening on port 17621 Jul 13 08:14:10 support-dash heroku/web.1: Stopping all processes with SIGTERM Jul 13 08:14:11 support-dash heroku/web.1: State changed from starting to up Jul 13 08:14:13 support-dash heroku/web.1: Process exited with status 143 Jul 13 08:15:48 support-dash heroku/router: at=error code=H12 desc="Request timeout" method=GET path=/ […]

Node.JS永远在Heroku上

所以,我需要在heroku上运行我的node.js应用程序,它工作得很好,但是当我的应用程序崩溃时,我需要重新启动它,所以我永远添加到package.json,并创build了一个名为forever.js的文件这个: var forever = require('forever'); var child = new (forever.Monitor)('web.js', { max: 3, silent: false, options: [] }); //child.on('exit', this.callback); child.start(); forever.startServer(child); 在我的Proc文件(该heroku使用知道该怎么开始)我说: web: node forever.js 好的! 现在,每当我的应用程序崩溃它自动重新启动,但时不时(几乎每1小时),Heroku开始投掷H99 – 平台错误,关于这个错误,他们说: 不像所有其他的错误,这将需要你采取行动纠正,这不需要你采取行动。 在一分钟内再次尝试,或检查状态网站。 但是,我只是手动重启我的应用程序,错误消失,如果我不这样做,它可能需要几个小时才能自行消失。 有人能帮我一下吗? 也许这是一个永远的问题? Heroku问题?

如何设置RedisStore – Node,Express,Socket.io,Heroku

我正在使用部署在Heroku上的Node&Express 4.0,并且试图将Redis的Socket.io作为一个会话存储来实现。 所以我有这个作为我现在的代码: var app = express(); var server = require('http').createServer(app); var io = require('socket.io').listen(server); var RedisStore = io.RedisStore; if (process.env.REDISTOGO_URL) { // inside if statement var rtg = require("url").parse(process.env.REDISTOGO_URL); var redis = require("redis").createClient(rtg.port, rtg.hostname); redis.auth(rtg.auth.split(":")[1]); } else { var redis = require("redis").createClient(); } /** Initialize RedisStore for socket.io **/ io.set('store', new RedisStore({ redis : […]

加快部署Heroku

Heroku太棒了 但每次我部署,Heroku似乎喜欢重新下载和重build所有的软件包。 使用socket.io和mailparser这需要大约3分钟。 有没有办法加快部署过程? 有没有办法告诉Heroku它可以caching这些项目? 或者我可以上传预build的node_modules ?