Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Heroku Error H12 (Request timeout) issue

I know its another Heroku Error H12 (Request timeout) issue. It seems the issue is caused by many different reason. I deployed a Rails 3.2.2 app on heroku few days ago. When I try to access my app through browser. I got

Application Error
An error occurred in the application and your page could not be served. Please try      again in a few moments.

If you are the application owner, check your logs for details.

So I start searching on the Internet as usual to figure what's wrong. Then I learn to use heroku logs to check my log file. Here is the log file.

2012-06-11T03:16:51+00:00 heroku[web.1]: Unidling
2012-06-11T03:16:51+00:00 heroku[web.1]: State changed from down to created
2012-06-11T03:16:51+00:00 heroku[web.1]: State changed from created to starting
2012-06-11T03:16:56+00:00 heroku[web.1]: Starting process with command `bundle exec rails server -p 43527`
2012-06-11T03:17:09+00:00 app[web.1]: DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/config/environment.rb:5)
2012-06-11T03:17:09+00:00 app[web.1]: DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/config/environment.rb:5)
2012-06-11T03:17:09+00:00 app[web.1]: DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/config/environment.rb:5)
2012-06-11T03:17:16+00:00 app[web.1]: [2012-06-11 03:17:16] INFO  WEBrick 1.3.1
2012-06-11T03:17:16+00:00 app[web.1]: [2012-06-11 03:17:16] INFO  WEBrick::HTTPServer#start: pid=1 port=43527
2012-06-11T03:17:16+00:00 app[web.1]: [2012-06-11 03:17:16] INFO  ruby 1.9.2 (2011-07-09) [x86_64-linux]
2012-06-11T03:17:17+00:00 heroku[web.1]: State changed from starting to up
2012-06-11T03:17:19+00:00 app[web.1]: => Booting WEBrick
2012-06-11T03:17:19+00:00 app[web.1]: => Rails 3.2.2 application starting in production on http://0.0.0.0:43527
2012-06-11T03:17:19+00:00 app[web.1]: => Call with -d to detach
2012-06-11T03:17:19+00:00 app[web.1]: => Ctrl-C to shutdown server
2012-06-11T03:17:19+00:00 app[web.1]: 
2012-06-11T03:17:19+00:00 app[web.1]: 
2012-06-11T03:17:19+00:00 app[web.1]: Started GET "/" for 123.240.186.119 at 2012-06-11 03:17:19 +0000
2012-06-11T03:17:20+00:00 app[web.1]: Processing by StaticPagesController#home as HTML
2012-06-11T03:17:20+00:00 app[web.1]:   Rendered static_pages/home.html.erb within layouts/application (40.3ms)
2012-06-11T03:17:49+00:00 heroku[router]: Error H12 (Request timeout) -> GET cold-lightning-6691.herokuapp.com/ dyno=web.1 queue= wait= service=30000ms status=503 bytes=0

After reviewing the logs, I don't really understand what's wrong. I did the research on the Internet again. It seems there are many different reasons which may cause this issue. I know there maybe some bugs in my app. But I can't tell which part of my code is wrong.

And I can run my app in my local computer. So do you know what's the problem or how to spot the problem?

Update:

When I do git push heroku

I receive this error message

Your bundle is complete! It was installed into ./vendor/bundle
       Cleaning up the bundler cache.
-----> Writing config/database.yml to read from DATABASE_URL
-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       rake aborted!
       could not connect to server: Connection refused
       Is the server running on host "127.0.0.1" and accepting
       TCP/IP connections on port 5432?

and I run $ heroku run rake assets:precompile --trace

I got

Running rake assets:precompile --trace attached to terminal... up, run.1
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-      rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7)
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7)
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7)
** Invoke assets:precompile (first_time)
** Execute assets:precompile
/usr/local/bin/ruby /app/vendor/bundle/ruby/1.9.1/bin/rake assets:precompile:all       RAILS_ENV=production RAILS_GROUPS=assets --trace
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7)
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7)
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7)
** Invoke assets:precompile:all (first_time)
** Execute assets:precompile:all
** Invoke assets:precompile:primary (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke environment (first_time)
** Execute environment
** Invoke tmp:cache:clear (first_time)
** Execute tmp:cache:clear
** Execute assets:precompile:primary
rake aborted!
Unexpected token: operator (<) (line: 11780, col: 1, pos: 325392)

Error
at new JS_Parse_Error (/tmp/execjs20120611-10-3yiu6e.js:497:22)
at js_error (/tmp/execjs20120611-10-3yiu6e.js:505:15)
at croak (/tmp/execjs20120611-10-3yiu6e.js:954:17)
at token_error (/tmp/execjs20120611-10-3yiu6e.js:961:17)
at unexpected (/tmp/execjs20120611-10-3yiu6e.js:967:17)
at /tmp/execjs20120611-10-3yiu6e.js:1340:17
at maybe_unary (/tmp/execjs20120611-10-3yiu6e.js:1425:27)
at expr_ops (/tmp/execjs20120611-10-3yiu6e.js:1452:32)
at maybe_conditional (/tmp/execjs20120611-10-3yiu6e.js:1456:28)
at maybe_assign (/tmp/execjs20120611-10-3yiu6e.js:1480:28)
  (in /app/app/assets/javascripts/application.js)
/app/vendor/bundle/ruby/1.9.1/gems/execjs-1.3.0/lib/execjs/external_runtime.rb:67:in    `extract_result'
/app/vendor/bundle/ruby/1.9.1/gems/execjs-1.3.0/lib/execjs/external_runtime.rb:27:in `block in exec'
/app/vendor/bundle/ruby/1.9.1/gems/execjs-1.3.0/lib/execjs/external_runtime.rb:40:in `compile_to_tempfile'
/app/vendor/bundle/ruby/1.9.1/gems/execjs-1.3.0/lib/execjs/external_runtime.rb:26:in `exec'
/app/vendor/bundle/ruby/1.9.1/gems/uglifier-1.2.3/lib/uglifier.rb:101:in `compile'
/app/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.2/lib/sprockets/compressors.rb:74:in `compress'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/processing.rb:265:in `block in js_compressor='
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/processor.rb:29:in `call'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/processor.rb:29:in `evaluate'
/app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/template.rb:76:in `render'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/context.rb:177:in `block in evaluate'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/context.rb:174:in `each'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/context.rb:174:in `evaluate'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/bundled_asset.rb:26:in `initialize'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/base.rb:244:in `new'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/base.rb:244:in `build_asset'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/index.rb:89:in `block in build_asset'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/caching.rb:19:in `cache_asset'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/index.rb:88:in `build_asset'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/base.rb:163:in `find_asset'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/index.rb:56:in `find_asset'
/app/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.2/lib/sprockets/static_compiler.rb:20:in `block in compile'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/base.rb:212:in `block in each_logical_path'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/base.rb:200:in `block (2 levels) in each_file'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/base.rb:190:in `each'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/base.rb:190:in `each_entry'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/base.rb:198:in `block in each_file'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/base.rb:197:in `each'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/base.rb:197:in `each_file'
/app/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.2/lib/sprockets/base.rb:210:in `each_logical_path'
/app/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.2/lib/sprockets/static_compiler.rb:18:in `compile'
/app/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.2/lib/sprockets/assets.rake:56:in `internal_precompile'
/app/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.2/lib/sprockets/assets.rake:70:in `block (3 levels) in <top (required)>'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain'
/usr/local/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke'
/app/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.2/lib/sprockets/assets.rake:60:in `block (3 levels) in <top (required)>'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain'
/usr/local/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>'
/app/vendor/bundle/ruby/1.9.1/bin/rake:19:in `load'
/app/vendor/bundle/ruby/1.9.1/bin/rake:19:in `<main>'
Tasks: TOP => assets:precompile:primary
rake aborted!
Command failed with status (1): [/usr/local/bin/ruby /app/vendor/bundle/rub...]
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/file_utils.rb:53:in `block in  create_shell_runner'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/file_utils.rb:45:in `call'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/file_utils.rb:45:in `sh'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/file_utils_ext.rb:39:in `sh'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/file_utils.rb:80:in `ruby'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/file_utils_ext.rb:39:in `ruby'
/app/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.2/lib/sprockets/assets.rake:12:in `ruby_rake_task'
/app/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.2/lib/sprockets/assets.rake:21:in `invoke_or_reboot_rake_task'
/app/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.2/lib/sprockets/assets.rake:29:in `block (2 levels) in <top (required)>'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain'
/usr/local/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>'
/app/vendor/bundle/ruby/1.9.1/bin/rake:19:in `load'
/app/vendor/bundle/ruby/1.9.1/bin/rake:19:in `<main>'
Tasks: TOP => assets:precompile
like image 479
Seadaniel Avatar asked Jun 11 '12 03:06

Seadaniel


People also ask

How do I fix heroku H12?

A restart cancels long-running requests. Restarting can resolve H12 issues because freshly-booted dynos receive requests without interference from long-running requests. Using the Heroku CLI, run heroku ps:restart web to restart all web dynos. or, using the Heroku Dashboard, click More, then Restart all dynos.

What is http timeout?

The HyperText Transfer Protocol (HTTP) 408 Request Timeout response status code means that the server would like to shut down this unused connection. It is sent on an idle connection by some servers, even without any previous request by the client.


2 Answers

Seems that you are getting a timeout, maybe that feed() call takes more than 30 seconds?

More about H12 error codes at https://devcenter.heroku.com/articles/error-codes#h12__request_timeout. I also recommend you to install rack-timeout as described at https://devcenter.heroku.com/articles/request-timeout.

like image 106
brunoghisi Avatar answered Oct 25 '22 01:10

brunoghisi


I had a similar issue and after giving up for a day, I came back to it and found my error. I wasn't sending a response to the client when an error occurred on the server side. Make sure you are returning a response no matter what the result of your server side algorithm is. If there is an error, return that. If the request was successful, return that response. I hope that helps.

If that doesn't help, check out heroku's guides on handling Request Timeouts, especially the Debugging request timeouts section could be of help.

like image 41
lwdthe1 Avatar answered Oct 25 '22 01:10

lwdthe1