Meteor.js-mupx部署给我带来了麻烦-我如何解决此错误?
我正在使用Meteor.js-mupx部署给我带来了麻烦-我如何解决此错误?,meteor,Meteor,我正在使用mupx将meteor应用程序部署到数字海洋。(使用一个5美元的内存为512 MB的微滴) 部署后,mupx返回此错误消息: > mupx deploy Meteor Up: Production Quality Meteor Deployments ------------------------------------------------ Configuration file : mup.json Settings file : settings.json
mupx
将meteor应用程序部署到数字海洋。(使用一个5美元的内存为512 MB的微滴)
部署后,mupx
返回此错误消息:
> mupx deploy
Meteor Up: Production Quality Meteor Deployments
------------------------------------------------
Configuration file : mup.json
Settings file : settings.json
Meteor app path : /Users/me/myapp
Using buildOptions : {}
Started TaskList: Deploy app 'My-App' (linux)
[48.59.198.247] - Uploading bundle
[48.59.198.247] - Uploading bundle: SUCCESS
[48.59.198.247] - Sending environment variables
[48.59.198.247] - Sending environment variables: SUCCESS
[48.59.198.247] - Initializing start script
[48.59.198.247] - Initializing start script: SUCCESS
[48.59.198.247] - Invoking deployment process
[48.59.198.247] - Invoking deployment process: SUCCESS
[48.59.198.247] - Verifying deployment
[48.59.198.247] x Verifying deployment: FAILED
-----------------------------------STDERR-----------------------------------
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (52) Empty reply from server
npm WARN package.json meteor-dev-bundle@0.0.0 No description
npm WARN package.json meteor-dev-bundle@0.0.0 No repository field.
npm WARN package.json meteor-dev-bundle@0.0.0 No README data
> fibers@1.0.5 install /bundle/bundle/programs/server/node_modules/fibers
> node ./build.js
`linux-x64-v8-3.14` exists; testing
Binary is fine; exiting
underscore@1.5.2 node_modules/underscore
semver@4.1.0 node_modules/semver
eachline@2.3.3 node_modules/eachline
└── type-of@2.0.1
chalk@0.5.1 node_modules/chalk
├── ansi-styles@1.1.0
├── escape-string-regexp@1.0.3
├── supports-color@0.2.0
├── has-ansi@0.1.0 (ansi-regex@0.2.1)
└── strip-ansi@0.3.0 (ansi-regex@0.2.1)
source-map-support@0.2.8 node_modules/source-map-support
└── source-map@0.1.32 (amdefine@0.1.0)
fibers@1.0.5 node_modules/fibers
=> Starting meteor app on port:80
=> Redeploying previous version of the app
------------------------------STDOUT-----------------------------
To see more logs type 'mup logs --tail=50'
-----------------------------------------------------------------
如果我检查服务器上的日志(使用mupx logs-f
),我会看到以下内容:
[48.59.198.247] /opt/meteord/run_app.sh: line 36: 16 Killed node main.js
[48.59.198.247] npm WARN package.json meteor-dev-bundle@0.0.0 No description
[48.59.198.247] npm WARN package.json meteor-dev-bundle@0.0.0 No repository field.
[48.59.198.247] npm WARN package.json meteor-dev-bundle@0.0.0 No README data
[48.59.198.247] /opt/meteord/run_app.sh: line 36: 16 Killed node main.js
[48.59.198.247] npm WARN package.json meteor-dev-bundle@0.0.0 No description
[48.59.198.247] npm WARN package.json meteor-dev-bundle@0.0.0 No repository field.
[48.59.198.247] npm WARN package.json meteor-dev-bundle@0.0.0 No README data
[48.59.198.247] /opt/meteord/run_app.sh: line 36: 16 Killed node main.js
[48.59.198.247] npm WARN package.json meteor-dev-bundle@0.0.0 No description
[48.59.198.247] npm WARN package.json meteor-dev-bundle@0.0.0 No repository field.
[48.59.198.247] npm WARN package.json meteor-dev-bundle@0.0.0 No README data
[48.59.198.247] /opt/meteord/run_app.sh: line 36: 16 Killed node main.js
我看到其他人通过使用具有更多RAM的实例来解决此问题。我看到其他人通过使用具有更多RAM的实例来解决此问题。我的应用程序非常简单,但显然不是轻量级的。我的
server/main.js
如下所示:
Meteor.startup(function () {
My_LineItems.find({}, {fields: {targeting: 1, id: 1}}).observeChanges({
changed: function(_id, fields) {
update_targeting(fields.id, fields.targeting);
}
});
My_LineItems.find({}).observeChanges({
added: function(_id, fields) {
update_targeting(fields.id, fields.targeting);
}
});
console.log('The app should be started now...');
});
Meteor.startup(function () {
Meteor.setTimeout(function() {
My_LineItems.find({}, {fields: {targeting: 1, id: 1}}).observeChanges({
changed: function(_id, fields) {
update_targeting(fields.id, fields.targeting);
}
});
My_LineItems.find({}).observeChanges({
added: function(_id, fields) {
update_targeting(fields.id, fields.targeting);
}
});
}, 30);
console.log('The app should be started now...');
});
显然,那些观察这些查询的请求太慢了,以至于它们不允许应用程序启动,并且在15秒或120秒后,应用程序仍然没有正确启动
我通过更改上面的代码解决了这个问题,如下所示:
Meteor.startup(function () {
My_LineItems.find({}, {fields: {targeting: 1, id: 1}}).observeChanges({
changed: function(_id, fields) {
update_targeting(fields.id, fields.targeting);
}
});
My_LineItems.find({}).observeChanges({
added: function(_id, fields) {
update_targeting(fields.id, fields.targeting);
}
});
console.log('The app should be started now...');
});
Meteor.startup(function () {
Meteor.setTimeout(function() {
My_LineItems.find({}, {fields: {targeting: 1, id: 1}}).observeChanges({
changed: function(_id, fields) {
update_targeting(fields.id, fields.targeting);
}
});
My_LineItems.find({}).observeChanges({
added: function(_id, fields) {
update_targeting(fields.id, fields.targeting);
}
});
}, 30);
console.log('The app should be started now...');
});
通过这次调整,我的应用程序能够顺利部署
基本上,每次我部署应用程序时,它都必须为集合中的每个项目运行
added
方法,其中有很多项。我将其放入Meteor.setTimeout()中,我可以让mupx
注册该应用程序已正确启动,然后可以说,繁重的过程将在后台运行。我的应用程序非常简单,但显然不是轻量级的。我的server/main.js
如下所示:
Meteor.startup(function () {
My_LineItems.find({}, {fields: {targeting: 1, id: 1}}).observeChanges({
changed: function(_id, fields) {
update_targeting(fields.id, fields.targeting);
}
});
My_LineItems.find({}).observeChanges({
added: function(_id, fields) {
update_targeting(fields.id, fields.targeting);
}
});
console.log('The app should be started now...');
});
Meteor.startup(function () {
Meteor.setTimeout(function() {
My_LineItems.find({}, {fields: {targeting: 1, id: 1}}).observeChanges({
changed: function(_id, fields) {
update_targeting(fields.id, fields.targeting);
}
});
My_LineItems.find({}).observeChanges({
added: function(_id, fields) {
update_targeting(fields.id, fields.targeting);
}
});
}, 30);
console.log('The app should be started now...');
});
显然,那些观察这些查询的请求太慢了,以至于它们不允许应用程序启动,并且在15秒或120秒后,应用程序仍然没有正确启动
我通过更改上面的代码解决了这个问题,如下所示:
Meteor.startup(function () {
My_LineItems.find({}, {fields: {targeting: 1, id: 1}}).observeChanges({
changed: function(_id, fields) {
update_targeting(fields.id, fields.targeting);
}
});
My_LineItems.find({}).observeChanges({
added: function(_id, fields) {
update_targeting(fields.id, fields.targeting);
}
});
console.log('The app should be started now...');
});
Meteor.startup(function () {
Meteor.setTimeout(function() {
My_LineItems.find({}, {fields: {targeting: 1, id: 1}}).observeChanges({
changed: function(_id, fields) {
update_targeting(fields.id, fields.targeting);
}
});
My_LineItems.find({}).observeChanges({
added: function(_id, fields) {
update_targeting(fields.id, fields.targeting);
}
});
}, 30);
console.log('The app should be started now...');
});
通过这次调整,我的应用程序能够顺利部署
基本上,每次我部署应用程序时,它都必须为集合中的每个项目运行
added
方法,其中有很多项。我将其放入Meteor.setTimeout()中,我可以让mupx
注册应用程序已正确启动,然后可以说繁重的进程将在后台运行。我只需将mup.json中的“deployCheckWaitTime”增加到120,就可以解决这个问题(我假设任何高于默认值20的值都可以正常工作)。我猜这只需要更多的时间来处理。这对我来说是通过简单地将mup.json中的“deployCheckWaitTime”增加到120来解决的(我假设任何高于默认值20的值都可以正常工作)。我想这只是需要更多的时间来处理。我用1 GB的RAM碰到了一个小插口,出现了相同的问题,所以我尝试了2 GB的RAM,但仍然出现了相同的问题…如何将deployCheckWaitTime延长到120左右?我用1 GB的RAM碰到了一个小插口,并且出现了相同的问题,所以我尝试了2 GB的RAM,但仍然出现了相同的问题…怎么样ut是否将部署检查等待时间延长到120左右?