basecamp / pow

Zero-configuration Rack server for Mac OS X
http://pow.cx/
MIT License
3.41k stars 259 forks source link

SystemExit (exit) during high load #266

Open daliborfilus opened 12 years ago

daliborfilus commented 12 years ago

PUT request with JSON body (but it crashes on random request). Ruby 1.9.3p0, Rails 3.2.1.

I'm making high load of API calls to my app and I just can't complete one phase without crash. Sometimes it crashes right away, sometimes after longer period (e.g. one minute).

I'm frustrated.

SystemExit (exit):
  /Users/noice/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:39:in `exit'
  /Users/noice/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:39:in `block in initialize'
  activesupport (3.2.1) lib/active_support/file_update_checker.rb:99:in `call'
  activesupport (3.2.1) lib/active_support/file_update_checker.rb:99:in `updated_at'
  activesupport (3.2.1) lib/active_support/file_update_checker.rb:66:in `updated?'
  railties (3.2.1) lib/rails/application.rb:228:in `map'
  railties (3.2.1) lib/rails/application.rb:228:in `reload_dependencies?'
  railties (3.2.1) lib/rails/application.rb:262:in `block (2 levels) in default_middleware_stack'
  actionpack (3.2.1) lib/action_dispatch/middleware/reloader.rb:63:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/reloader.rb:63:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  railties (3.2.1) lib/rails/rack/logger.rb:26:in `call_app'
  railties (3.2.1) lib/rails/rack/logger.rb:16:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/request_id.rb:22:in `call'
  rack (1.4.1) lib/rack/methodoverride.rb:21:in `call'
  rack (1.4.1) lib/rack/runtime.rb:17:in `call'
  activesupport (3.2.1) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
  rack (1.4.1) lib/rack/lock.rb:15:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/static.rb:53:in `call'
  railties (3.2.1) lib/rails/engine.rb:479:in `call'
  railties (3.2.1) lib/rails/application.rb:220:in `call'
  railties (3.2.1) lib/rails/railtie/configurable.rb:30:in `method_missing'
  /Users/noice/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:146:in `handle'
  /Users/noice/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:99:in `rescue in block (2 levels) in start'
  /Users/noice/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:96:in `block (2 levels) in start'
  /Users/noice/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:86:in `each'
  /Users/noice/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:86:in `block in start'
  /Users/noice/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:66:in `loop'
  /Users/noice/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:66:in `start'
  /Users/noice/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:13:in `run'
  /Users/noice/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/bin/nack_worker:4:in `<main>'

Doesn't it have something to do with Pow restarting after some requests?

EDIT:

Found this in the console (a lot of times):

05.03.12 20:26:10,562 cx.pow.powd: node.js:134
05.03.12 20:26:10,562 cx.pow.powd:         throw e; // process.nextTick error, or 'error' event on first tick
05.03.12 20:26:10,562 cx.pow.powd:         ^
05.03.12 20:26:10,562 cx.pow.powd: Error: Can't set headers after they are sent.
05.03.12 20:26:10,562 cx.pow.powd:     at ServerResponse.<anonymous> (http.js:527:11)
05.03.12 20:26:10,562 cx.pow.powd:     at ServerResponse.setHeader (/Users/noice/Library/Application Support/Pow/Versions/0.3.2/node_modules/connect/lib/patch.js:50:20)
05.03.12 20:26:10,562 cx.pow.powd:     at next (/Users/noice/Library/Application Support/Pow/Versions/0.3.2/node_modules/connect/lib/http.js:162:13)
05.03.12 20:26:10,562 cx.pow.powd:     at next (/Users/noice/Library/Application Support/Pow/Versions/0.3.2/node_modules/connect/lib/http.js:207:9)
05.03.12 20:26:10,562 cx.pow.powd:     at RackApplication.<anonymous> (/Users/noice/Library/Application Support/Pow/Versions/0.3.2/lib/rack_application.js:197:24)
05.03.12 20:26:10,562 cx.pow.powd:     at ClientRequest.<anonymous> (/Users/noice/Library/Application Support/Pow/Versions/0.3.2/lib/rack_application.js:3:63)
05.03.12 20:26:10,562 cx.pow.powd:     at ClientRequest.emit (events.js:64:17)
05.03.12 20:26:10,562 cx.pow.powd:     at Client._finishRequest (/Users/noice/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/client.js:75:13)
05.03.12 20:26:10,562 cx.pow.powd:     at Client.<anonymous> (/Users/noice/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/client.js:37:21)
05.03.12 20:26:10,562 cx.pow.powd:     at Client.emit (events.js:81:20)
05.03.12 20:26:10,562 com.apple.launchd.peruser.501: (cx.pow.powd[85616]) Exited with code: 1
daliborfilus commented 12 years ago

just a proof it crashes at random places:

SystemExit (exit):
  /Users/noice/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:39:in `exit'
  /Users/noice/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:39:in `block in initialize'
  journey (1.0.1) lib/journey/path/pattern.rb:166:in `call'
  journey (1.0.1) lib/journey/path/pattern.rb:166:in `match'
  journey (1.0.1) lib/journey/router.rb:129:in `block in find_routes'
  journey (1.0.1) lib/journey/router.rb:128:in `each'
  journey (1.0.1) lib/journey/router.rb:128:in `find_all'
  journey (1.0.1) lib/journey/router.rb:128:in `find_routes'
  journey (1.0.1) lib/journey/router.rb:56:in `call'
  actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:589:in `call'
  rack-rpc (0.0.6) lib/rack/rpc/middleware.rb:22:in `call'
  rack-rpc (0.0.6) lib/rack/rpc/endpoint.rb:36:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
  rack (1.4.1) lib/rack/etag.rb:23:in `call'
  rack (1.4.1) lib/rack/conditionalget.rb:35:in `call'
myobie commented 12 years ago

Is there any resolution or workaround for this?

sstephenson commented 12 years ago

@josh any ideas?

eimermusic commented 11 years ago

This problem is still present as ever for me. I do have some odd observations that I wanted to add to the issue.

We do a lot of dynamic video encoding and in development just pushing them out from rails with send_file. Pow does not like h264 video in particular. Even just other (older, more basic) mpeg4 codecs are much less of a problem.

Odd.