2012-05-06 37 views
20

Mỗi lần tôi khởi động ứng dụng của tôi nó không thể vượt qua điểm 60 giây mà không:Heroku Boot Timeout (Lỗi R10)

2012-05-06T22:41:11+00:00 heroku[web.1]: Stopping process with SIGKILL 
2012-05-06T22:41:11+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch 
2012-05-06T22:41:11+00:00 heroku[web.1]: Process exited with status 137 
2012-05-06T22:41:12+00:00 heroku[web.1]: State changed from starting to crashed 

Đây là tôi Procfile:

web: bundle exec thin start -p $PORT 

Bất kỳ phản ứng sẽ được triệt để đánh giá cao.

+0

Tôi không thuyết phục bạn sẽ nhận được nhiều trong cách trả lời hữu ích mà không cần thêm dữ liệu - chắc chắn không có gì khác trong nhật ký? Bạn có thể chạy những thứ cục bộ với 'Foreman'? https://devcenter.heroku.com/articles/procfile#developing_locally_with_foreman –

+0

Có, tôi có thể chạy mọi thứ cục bộ với Foreman. Ngoài ra, thay đổi Procfile của tôi thành một cái gì đó như web: bundle exec ruby ​​app/models/code.rb -p $ PORT không thay đổi lệnh mà heroku chạy khi khởi động ứng dụng của tôi. Đó là, nó vẫn cố gắng để thực hiện bó exec mỏng bắt đầu -p ... – camelCase

+0

Âm thanh như Procfile của bạn có thể không được sử dụng. Là nó trong thư mục gốc của repo Git của bạn? –

Trả lời

12

Nếu ứng dụng của bạn mất hơn 60 giây vì lý do "tốt", bạn có thể làm việc xung quanh giới hạn thời gian khởi động 60 giây với https://github.com/dblock/heroku-forward.

+0

Cảm ơn vì điều này, nó làm sạch một loạt các lỗi của tôi. –

+1

Bất kỳ đề xuất nào về cách suy luận những lý do đó? 'nhật ký heroku' chỉ hiển thị thực tế là thời gian chờ' R10 - Khởi động khởi động 'xảy ra. Quy trình đã thoát với trạng thái 137' Và .. đó là nó;) – Trip

+1

Bạn có thể bắt đầu bằng cách đo thời gian cần thiết. https://gist.github.com/dblock/4981231 –

3

Thời gian chờ khởi động của Heroku cũng làm tôi hơi khó chịu. Tôi đọc một số bài đăng trên blog về cách tìm hiểu và kết thúc tự động hóa một số giải pháp thành một viên ngọc.

Để giảm thời gian khởi động khi triển khai, bạn có thể cắt đá quý được nạp lúc khởi động (điều này không có nghĩa là bạn phải cắt chúng khỏi ứng dụng, chỉ cần thời gian khởi động).

gem_bench đánh giá đá quý nào có thể không phải là cần khi khởi động.

Tôi có một ứng dụng với khoảng 250 viên đá quý và có thể thêm: require => false vào khoảng 60 trong số đó, với hiệu ứng ấn tượng.

https://github.com/acquaintable/gem_bench

Disclaimer: Tôi là tác giả của đá quý ruby ​​nguồn mở này. Tôi đã viết đá quý để giúp bản thân mình giải quyết vấn đề chính xác này: thời gian chờ 60 giây trên Heroku.

+0

Xin chào, tôi đã sử dụng đá quý .... Tôi nhận thấy rằng, ngay cả khi tôi đánh dấu một cái gì đó là require => false nó vẫn hiển thị như yêu cầu sai? – Angela

+0

@Angela Tôi không chắc chắn ý của bạn là gì. Bạn có thể xây dựng thêm trong một vấn đề theo dõi lỗi ở đây xin vui lòng: https://github.com/pboling/gem_bench/issues –

10

Giải pháp là tôi đã quên bao gồm -p $ PORT trong dòng Procfile của mình.

trong Procfile thay đổi:

web: bundle exec thin start 

để

web: bundle exec thin start -p $PORT 

Đó cố định nó cho tôi.

+0

Cảm ơn, đã sửa nó cho tôi quá – rmcsharry

+0

Hm, tôi đã thử, tôi vẫn hết thời gian ..... – Angela

1

Hi tôi đã phải đối mặt với cùng một issue.I đã giải quyết vấn đề này bằng cách tăng thời gian chờ trong /config/unicorn.rb thay đổi thời gian chờ 15 để thời gian chờ 20 trong /config/unicorn.rb

+0

Điều này đã làm cho tôi quá. Nếu khởi động mất nhiều thời gian hơn giới hạn lân, sau đó nó sẽ kết thúc trong một vòng lặp vô tận vì nó không bao giờ có đủ thời gian để hoàn thành :) –

+1

Trường hợp excatly tôi có thể tìm thấy con đường đó? – bielas