2014-10-27 18 views
6

Tôi đã nhận được lỗi này ngay bây giờ trên & tắt trong vài ngày qua kể từ khi tôi triển khai ứng dụng của mình cho heroku. Nó xảy ra cả trước khi tôi bắt đầu sử dụng kỳ lân như một máy chủ cũng như sau đó. Đôi khi tôi có thể sao lưu và chạy nó bằng cách sử dụng heroku run rake db:migrate sau đó heroku restart nhưng điều này chỉ sửa chữa nó trong một vài giờ và nó bị hỏng một lần nữa. Đối với trang web, nó nói "Lỗi ứng dụng". Các bản ghi không phải là rất hữu ích nhưng đây là những gì nó nói mỗi lần lỗi này xảy ra:Lỗi Heroku H13

[2014-10-27T21:13:31.675956 #2] ERROR -- : worker=1 PID:8 timeout (16s > 15s), killing 
[2014-10-27T21:13:31.731646 #14] INFO -- : worker=1 ready 
[2014-10-27T21:13:31.694690 #2] ERROR -- : reaped #<Process::Status: pid 8 SIGKILL (signal 9)> worker=1 
at=error code=H13 desc="Connection closed without response" method=GET 

Tôi chỉ sử dụng phiên bản miễn phí của Heroku, tôi muốn chắc chắn nó hoạt động trước khi nâng cấp nhưng là duy nhất của tôi tùy chọn tại thời điểm này?

Ngoài ra tôi có thể chạy nội dung này hoàn toàn tốt bằng cách sử dụng rails server hoặc foreman start.

docs

Trả lời

5

Heroku nói this about H13:

H13 - Kết nối bị đóng mà không phản ứng

Lỗi này được ném khi một quá trình trong Dyno web của bạn chấp nhận một kết nối, nhưng sau đó đóng socket mà không cần viết bất cứ điều gì với nó .

Một ví dụ mà điều này có thể xảy ra là khi máy chủ web Unicorn được định cấu hình với thời gian chờ ngắn hơn 30 và yêu cầu chưa được xử lý bởi nhân viên trước khi hết thời gian chờ. Trong trường hợp này, Unicorn đóng kết nối trước khi bất kỳ dữ liệu nào được ghi, dẫn đến một H13.

Một vài dòng lên, bạn có một lỗi về một thời gian quá trình ra sau 15 giây:

ERROR -- : worker=1 PID:8 timeout (16s > 15s), killing 

Heroku giúp đỡ có một phần trên timeout settings:

Tùy thuộc vào ngôn ngữ của bạn, bạn có thể có thể đặt thời gian chờ ở cấp máy chủ ứng dụng. Một ví dụ là Unicorn của Ruby. Trong Unicorn bạn có thể đặt thời gian chờ trong config/unicorn.rb như thế này:

timeout 15

Các bộ đếm thời gian sẽ bắt đầu một lần Unicorn bắt đầu xử lý yêu cầu, nếu 15 giây trôi qua, sau đó quá trình tổng thể sẽ gửi một SIGKILL cho người lao động nhưng không có ngoại lệ sẽ được nâng lên.

Điều đó khớp với thông báo lỗi trong nhật ký của bạn. Tôi sẽ xem xét nó.

+0

Tôi có một dòng trong config/unicorn.rb có nội dung 'timeout 15' và tại một thời điểm tôi đã thay đổi thành' timeout 30' thành vô ích – Eli

+0

Tôi sẽ chấp nhận câu trả lời này vì nó dường như đang hoạt động liên tục nên tôi không chắc điều gì đã gây ra vấn đề này. – Eli

+4

Eli, Mọi thay đổi trong tình huống này? Tôi thỉnh thoảng nhận được lỗi này, nhưng dường như biến mất chỉ là về thời gian tôi bắt đầu xử lý sự cố. Tôi có vẻ như nó rất có thể xảy ra sau khi ứng dụng ngồi không hoạt động trong một ngày hoặc lâu hơn, gần như là nó đang ngủ một phần. – SteveO7

Các vấn đề liên quan