2

I have a Meteor app deployed with Passenger + Nginx (as follow) on AWS EC2 instance under Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-62-generic x86_64)

The problem is that it takes around 100% CPU usage permanently.

enter image description here

I've tried to switch to more powerful instance and even deployed a blank app instead of mine - still the same.

Any ideas where to dig? Thanks.

P.S.

var/log/nginx/error.log:

2017/02/08 08:04:20 [info] 18232#18232: Using 32768KiB of shared memory for nchan in /etc/nginx/nginx.conf:71
[ 2017-02-08 08:04:20.4123 18239/7fe378ac0780 age/Wat/WatchdogMain.cpp:1281 ]: Starting Passenger watchdog...
[ 2017-02-08 08:04:20.4281 18242/7f7adea7b780 age/Cor/CoreMain.cpp:1070 ]: Starting Passenger core...
[ 2017-02-08 08:04:20.4282 18242/7f7adea7b780 age/Cor/CoreMain.cpp:245 ]: Passenger core running in multi-application mode.
[ 2017-02-08 08:04:20.4309 18242/7f7adea7b780 age/Cor/CoreMain.cpp:820 ]: Passenger core online, PID 18242
[ 2017-02-08 08:04:20.4511 18248/7fdc44af6780 age/Ust/UstRouterMain.cpp:529 ]: Starting Passenger UstRouter...
[ 2017-02-08 08:04:20.4517 18248/7fdc44af6780 age/Ust/UstRouterMain.cpp:342 ]: Passenger UstRouter online, PID 18248
[ 2017-02-08 08:04:22.7236 18242/7f7ade98c700 age/Cor/SecurityUpdateChecker.h:464 ]: Security update check: no update found (next check in 24 hours)

npm install output:

> fibers@1.0.15 install /var/www/play/bundle/programs/server/node_modules/fibers
> node build.js || nodejs build.js

`linux-x64-48` exists; testing
Binary is fine; exiting

> meteor-dev-bundle@0.0.0 install /var/www/play/bundle/programs/server
> node npm-rebuild.js

{
  "meteor-dev-bundle": "0.0.0",
  "npm": "3.10.10",
  "ares": "1.10.1-DEV",
  "http_parser": "2.7.0",
  "icu": "56.1",
  "modules": "48",
  "node": "6.9.5",
  "openssl": "1.0.2k",
  "uv": "1.9.1",
  "v8": "5.1.281.89",
  "zlib": "1.2.8"
}
meteor-dev-bundle@0.0.0 /var/www/play/bundle/programs/server
├── amdefine@1.0.1
├── asap@2.0.5
├── fibers@1.0.15
├── meteor-promise@0.8.0
├─┬ node-gyp@3.4.0
│ ├─┬ fstream@1.0.10
│ │ └── inherits@2.0.3
│ ├─┬ glob@7.1.1
│ │ ├── fs.realpath@1.0.0
│ │ ├─┬ inflight@1.0.6
│ │ │ └── wrappy@1.0.2
│ │ ├── once@1.4.0
│ │ └── path-is-absolute@1.0.1
│ ├── graceful-fs@4.1.11
│ ├─┬ minimatch@3.0.3
│ │ └─┬ brace-expansion@1.1.6
│ │   ├── balanced-match@0.4.2
│ │   └── concat-map@0.0.1
│ ├─┬ mkdirp@0.5.1
│ │ └── minimist@0.0.8
│ ├─┬ nopt@3.0.6
│ │ └── abbrev@1.0.9
│ ├─┬ npmlog@3.1.2
│ │ ├─┬ are-we-there-yet@1.1.2
│ │ │ ├── delegates@1.0.0
│ │ │ └── readable-stream@2.2.2
│ │ ├── console-control-strings@1.1.0
│ │ ├─┬ gauge@2.6.0
│ │ │ ├── aproba@1.1.0
│ │ │ ├── has-color@0.1.7
│ │ │ ├── has-unicode@2.0.1
│ │ │ ├── object-assign@4.1.1
│ │ │ ├── signal-exit@3.0.2
│ │ │ ├─┬ string-width@1.0.2
│ │ │ │ ├── code-point-at@1.1.0
│ │ │ │ └─┬ is-fullwidth-code-point@1.0.0
│ │ │ │   └── number-is-nan@1.0.1
│ │ │ ├─┬ strip-ansi@3.0.1
│ │ │ │ └── ansi-regex@2.1.1
│ │ │ └── wide-align@1.1.0
│ │ └── set-blocking@2.0.0
│ ├─┬ osenv@0.1.4
│ │ ├── os-homedir@1.0.2
│ │ └── os-tmpdir@1.0.2
│ ├─┬ path-array@1.0.1
│ │ └─┬ array-index@1.0.0
│ │   ├─┬ debug@2.6.0
│ │   │ └── ms@0.7.2
│ │   └─┬ es6-symbol@3.1.0
│ │     ├── d@0.1.1
│ │     └─┬ es5-ext@0.10.12
│ │       └── es6-iterator@2.0.0
│ ├─┬ request@2.79.0
│ │ ├── aws-sign2@0.6.0
│ │ ├── aws4@1.6.0
│ │ ├── caseless@0.11.0
│ │ ├─┬ combined-stream@1.0.5
│ │ │ └── delayed-stream@1.0.0
│ │ ├── extend@3.0.0
│ │ ├── forever-agent@0.6.1
│ │ ├─┬ form-data@2.1.2
│ │ │ └── asynckit@0.4.0
│ │ ├─┬ har-validator@2.0.6
│ │ │ ├─┬ chalk@1.1.3
│ │ │ │ ├── ansi-styles@2.2.1
│ │ │ │ ├── escape-string-regexp@1.0.5
│ │ │ │ ├── has-ansi@2.0.0
│ │ │ │ └── supports-color@2.0.0
│ │ │ ├─┬ commander@2.9.0
│ │ │ │ └── graceful-readlink@1.0.1
│ │ │ ├─┬ is-my-json-valid@2.15.0
│ │ │ │ ├── generate-function@2.0.0
│ │ │ │ ├─┬ generate-object-property@1.2.0
│ │ │ │ │ └── is-property@1.0.2
│ │ │ │ ├── jsonpointer@4.0.1
│ │ │ │ └── xtend@4.0.1
│ │ │ └─┬ pinkie-promise@2.0.1
│ │ │   └── pinkie@2.0.4
│ │ ├─┬ hawk@3.1.3
│ │ │ ├── boom@2.10.1
│ │ │ ├── cryptiles@2.0.5
│ │ │ ├── hoek@2.16.3
│ │ │ └── sntp@1.0.9
│ │ ├─┬ http-signature@1.1.1
│ │ │ ├── assert-plus@0.2.0
│ │ │ ├─┬ jsprim@1.3.1
│ │ │ │ ├── extsprintf@1.0.2
│ │ │ │ ├── json-schema@0.2.3
│ │ │ │ └── verror@1.3.6
│ │ │ └─┬ sshpk@1.10.2
│ │ │   ├── asn1@0.2.3
│ │ │   ├── assert-plus@1.0.0
│ │ │   ├── bcrypt-pbkdf@1.0.1
│ │ │   ├─┬ dashdash@1.14.1
│ │ │   │ └── assert-plus@1.0.0
│ │ │   ├── ecc-jsbn@0.1.1
│ │ │   ├─┬ getpass@0.1.6
│ │ │   │ └── assert-plus@1.0.0
│ │ │   ├── jodid25519@1.0.2
│ │ │   ├── jsbn@0.1.0
│ │ │   └── tweetnacl@0.14.5
│ │ ├── is-typedarray@1.0.0
│ │ ├── isstream@0.1.2
│ │ ├── json-stringify-safe@5.0.1
│ │ ├─┬ mime-types@2.1.14
│ │ │ └── mime-db@1.26.0
│ │ ├── oauth-sign@0.8.2
│ │ ├── qs@6.3.0
│ │ ├── stringstream@0.0.5
│ │ ├─┬ tough-cookie@2.3.2
│ │ │ └── punycode@1.4.1
│ │ ├── tunnel-agent@0.4.3
│ │ └── uuid@3.0.1
│ ├── rimraf@2.5.4
│ ├─┬ tar@2.2.1
│ │ └── block-stream@0.0.9
│ └─┬ which@1.2.12
│   └── isexe@1.1.2
├─┬ node-pre-gyp@0.6.29
│ ├─┬ rc@1.1.6
│ │ ├── deep-extend@0.4.1
│ │ ├── ini@1.3.4
│ │ ├── minimist@1.2.0
│ │ └── strip-json-comments@1.0.4
│ ├── semver@5.2.0
│ └─┬ tar-pack@3.1.4
│   ├─┬ debug@2.2.0
│   │ └── ms@0.7.1
│   ├── fstream-ignore@1.0.5
│   ├── once@1.3.3
│   ├─┬ readable-stream@2.1.5
│   │ ├── buffer-shims@1.0.0
│   │ ├── core-util-is@1.0.2
│   │ ├── isarray@1.0.0
│   │ ├── process-nextick-args@1.0.7
│   │ ├── string_decoder@0.10.31
│   │ └── util-deprecate@1.0.2
│   └── uid-number@0.0.6
├── promise@7.1.1
├── semver@4.1.0
├── source-map@0.1.32
├── source-map-support@0.3.2
└── underscore@1.5.2

npm WARN meteor-dev-bundle@0.0.0 No description
npm WARN meteor-dev-bundle@0.0.0 No repository field.
npm WARN meteor-dev-bundle@0.0.0 No license field.
Viktor
  • 399
  • 2
  • 14

4 Answers4

1

According to the Meteor deployment guide, you have to use specifically Node 4.6.2.

Depending on the version of Meteor you are using, you should install the proper version of node using the appropriate installation process for your platform.

  • Node 4.6.2 for Meteor 1.4.x
  • Node 0.10.43 for Meteor 1.3.x and earlier

If you use a mismatched version of Node when deploying your application, you will encounter errors!

Passenger docs also suggest a 4.x version of node.

It worked for me with node js v4.8.4. Now CPU rarely goes above 10%.

Community
  • 1
  • 1
Mahesh Khond
  • 1,297
  • 1
  • 14
  • 31
  • I've been suggested this on Meteor forum, trouble appeared again. Looks like my app just needed more powerful instance. Anyway, thanks ) – Viktor Sep 03 '17 at 18:41
0

Fixed it by reinstalling everything from the scratch. Still don't know what happend.

Viktor
  • 399
  • 2
  • 14
0

It's happening again, approximately once per day: enter image description here

Wonder if there is some alternative for Passenger + Nginx?

Viktor
  • 399
  • 2
  • 14
0

Node version as mentioned in above answers strictly matters. You can try installing nginx+ pm2. It works like charm. To know more about pm2 , I already answered here.

How to run built of Meteor's sample app via Node

Ankur Soni
  • 5,725
  • 5
  • 50
  • 81