Articles of heroku

heroku上的node.js web服务器 – 不断增长的内存

我的应用程序启动并运行在5个平行的dynos上的heroku。 有500-1500瑞克/分钟的恒定负载,所以高达25瑞克/秒。 问题是RSS内存在不断增长。 现在我手动重新启动应用程序时,内存达到危险的水平(1 heroku dyno使用的最大内存是512MB)。 内存图表看起来像这样(灰色上限是在512mb限制): 内存释放的时候(在图表上)是当我重新启动应用程序。 奇怪的是,只有当服务器上有不断的负载时才会发生。 当服务器上存在例如2分钟的负载时,则内存增加,之后再下降。 所以看起来由于某种原因,垃圾收集器工作不正常(这是没有收集垃圾,直到服务器加载完成,应用程序不忙)。 有什么我可以做的吗? 这不是内存泄漏,我认为是因为当服务器上没有负载时释放内存… 我到目前为止所尝试的是: 以2分钟间隔手动呼叫GC 设置 – max-old-space-size = 300然而当内存命中300mb时没有任何反应 – 它仍在增加。 也许有其他的select,可以帮助? 节点版本是0.10.20 我使用节点memwatch包,我设法从应用程序收集堆差异: http://jsonfiddle.net/auf8d(11分钟,+37 MB之间的堆差异) http://jsonfiddle.net/4nvcd(15分钟,+50 MB之间的堆差异) 所以肯定会有一些泄漏。 最大的记忆从第一差异变化: … { "what": "Array", "size_bytes": 9320312, "size": "8.89 mb", "+": 79086, "-": 10215 }, … { "what": "Closure", "size_bytes": 2638224, "size": "2.52 mb", "+": […]

在heroku上与socket.io的Nodejs

我想在expressku上运行express和socket.io的nodejs应用程序,并且出现这个错误 EACCESS,权限被拒绝 当我尝试运行下面的代码: app.configure(function () { app.set('port', process.env.PORT || 3000); }); var server = http.createServer(app).listen(app.get('port')) io = require('socket.io').listen(server); // it crashes on this line io.configure(function () { io.set("transports", ["xhr-polling"]); io.set("polling duration", 10); io.set("log level", 1); }); 是否有可能在heroku上做到这一点? 依赖关系: "socket.io": "*", "express": "3.0.0rc4",

如何使用node.js将pass-thru上传到Heroku上的s3?

这是我目前的代码。 我使用快速和knox,我不认为我做任何exception,但s3.putFile响应400状态代码,但空错误,并不上传文件。 var express = require('express'); var knox = require('knox'); var app = express(); app.use(express.bodyParser()); var s3 = knox.createClient({ key: process.env.AWS_ACCESS_KEY_ID, secret: process.env.AWS_SECRET_ACCESS_KEY, bucket: process.env.S3_BUCKET_NAME }); app.post('/upload', function(req, res, next) { var photo = req.files.photo; var s3Headers = { 'Content-Type': photo.type, 'x-amz-acl': 'public-read' }; s3.putFile(photo.path, photo.name, s3Headers, function(err, s3response){ //handle, respond }); }); 即使从cloud9在线编辑器/debugging器,这个相同的代码工作正常,而不是从Heroku。 我猜这跟“ […]

在节点heroku项目上安装gems

我在heroku上编写一个节点应用程序,并且该应用程序需要安装一个gem, 指南针 ,用于节点指南针 。 不过,我似乎无法弄清楚如何在heroku上的节点应用程序中安装gem。 我有一个Gemfile,看起来像这样。 source "https://rubygems.org" gem 'compass' 你之前成功地做到了这一点吗?

NodeJS / Express请求实体太大 – Heroku

我已经到处寻找,似乎无法find关于这个的解释,这就是Heroku在我的日志中显示的内容: 45:45+00:00 app[web.7]: Error: Request Entity Too Large 45:45+00:00 app[web.7]: at Object.error (/app/node_modules/express/node_modules/connect/lib/utils.js:44:13) 45:45+00:00 app[web.7]: at Object.limit [as handle] (/app/node_modules/express/node_modules/connect/lib/middleware/limit.js:45:47) 45:45+00:00 app[web.7]: at next (/app/node_modules/express/node_modules/connect/lib/proto.js:190:15) 45:45+00:00 app[web.7]: at Object.logger [as handle] (/app/node_modules/express/node_modules/connect/lib/middleware/logger.js:157:5) 45:45+00:00 app[web.7]: at next (/app/node_modules/express/node_modules/connect/lib/proto.js:190:15) 45:45+00:00 app[web.7]: at Object.favicon [as handle] (/app/node_modules/express/node_modules/connect/lib/middleware/favicon.js:78:7) 45:45+00:00 app[web.7]: at next (/app/node_modules/express/node_modules/connect/lib/proto.js:190:15) 45:45+00:00 app[web.7]: at Object.expressInit [as handle] […]

Heroku在Windows命令行报告“没有指定应用程序”

我有一个运行在Heroku上的node.js应用程序。 我已经使用(Windows)命令行用heroku create初始化应用程序,并且可以点击生产网站并查看它是否正确运行。 一切都很好。 但是,当我尝试从应用程序所在的目录运行简单命令(如heroku ps ,Heroku会回应“没有指定应用程序”错误: C:\dev\iq>heroku ps ! No app specified. ! Run this command from an app folder or specify which app to use with –app APP. 我读过其他post,你可以避免必须使用每个命令的–app APP语法 – 如果你像这样configuration混帐: git config heroku.remote heroku 然而,这样做之后,Heroku仍然抱怨应用程序没有被指定为简单的命令行请求。 我已经validation.git/config已被适当更新: C:\dev\iq>type .git\config [core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true […]

在部署node.js应用程序之后,ghost博客部分会中断

我有一个node.js应用程序,其中一个视图是一个ghost.js博客,我通过遵循Ghost的wiki文章Using Ghost作为npm模块进行了整合。 目前,我的本地版本完美地工作。 错误: 当我访问部署的网站时,一切工作正常,除了当我到mysite.heroku.com/blog ,在这一点上,我得到的鬼页面看起来像 。 我注意到应用程序有两个同时运行的本地主机分支( localhost:3000和localhost:2368/ )。 我不确定这是否会导致错误。 我已经检查了我的Heroku日志,他们没有提供任何比GET请求发送到/blog更多的细节,首先返回301 ,然后是404错误。 另外,知道当我点击Go to front page链接时,它会发送给我http://localhost:2368/ 我的config.js文件如下所示: var path = require('path'), config; config = { // ### Production // When running Ghost in the wild, use the production environment // Configure your URL and mail settings here production: { url: 'http://example.com/blog', mail: {}, database: […]

让Sails.js使用Node.js集群模块

我最近开始在使用Sails.js框架的节点js上开发一个应用程序。 我喜欢这个框架,并且我想要使用集群模块,因此它具有更好的可扩展性。 我将如何去做呢? 如果有任何build议,我将不胜感激。 谢谢

如何在mongoLab和Heroku服务器中使用mongo URI

我正在使用MongoDb和Nodejs。 Nodejs托pipe在Heroku服务器上,Mongodb通过Heroku插件在MongoLab中。 在安装了MongoLab插件之后,我收到了这个URI: mongodb://<dbuser>:<dbpassword>@ds053148.mongolab.com:53148/heroku_app18934798 我不知道如何使用这个URI,请帮忙? 在哪里放? 什么是<dbuser>:<dbpassword 这是我在locallhost中locallhost所关心的configuration 在server.js var env = process.env.NODE_ENV || 'development', config = require('./config/config')[env], mongoose = require('mongoose'); var db = mongoose.connect(config.db); 在express.js app.use(express.session({ secret: 'thissecret', key:'express.sid', store: new mongoStore({ url: config.db, collection: 'sessions' }) })); 在config.js module.exports = { development: { db: 'mongodb://localhost/mean-dev', root: rootPath, app: { name: 'MEAN – A […]

将Deployd部署到Heroku仪表板键

我有一个Deployd应用程序,我正在尝试部署到Heroku。 我已经成功地部署了应用程序,并能够通过它的url来实现。 我现在试图访问仪表板。 为了访问仪表板 ,它需要我有从服务器生成的密钥。 我知道有两种方法可以做到这一点。 这里描述的第一种方法在本地生成密钥并将其推送到heroku。 我觉得这种方法是不安全的,因为这些密钥是发布到VCS的。 第二种方法是使用Procfile并列出dpd keygen和dpd showkey 。 然而,由于某种原因,这种方法不适合我。 我看到的命令在heroku日志中执行,但它不会打印出来的键,我不能通过执行heroku run dpd showkey看到它。 我想弄清楚为什么列出我的procfile中的命令不起作用。 请find我的文件列出如下: web: node app.js cmd: dpd keygen cmd: dpd showkey 我的日志文件如下: 2015-08-30T19:18:25.012474+00:00 heroku[api]: Starting process with command `dpd showkey` by [email] 2015-08-30T19:18:28.196008+00:00 heroku[run.5122]: Starting process with command `dpd showkey` 2015-08-30T19:18:28.168161+00:00 heroku[run.5122]: Awaiting client 2015-08-30T19:18:28.501367+00:00 heroku[run.5122]: State changed […]