2012-03-23 11 views
5

tôi đã nhận thấy rằng một số yêu cầu, đặc biệt là từ Uptime Robot để kiểm tra thời gian hoạt động trang gần đây đã bắt đầu tạo ra các lỗi Lint Kệ sau on Rails của tôi ứng dụng 3.1.x:Làm thế nào để giải quyết lỗi Rack Lint?

21:47:05 web.1  | Started HEAD "/" for 74.86.158.106 at 2012-03-22 21:47:05 -0400 
21:47:05 web.1  | Processing by HomeController#index as */* 
... 
21:47:05 web.1  | /Users/username/.rvm/gems/[email protected]/gems/activesupport-3.1.4/lib/active_support/core_ext/string/output_safety.rb:23: warning: regexp match /.../n against to UTF-8 string 
... 
21:47:05 web.1  | Completed 200 OK in 81ms (Views: 60.3ms | ActiveRecord: 0.0ms) 
21:47:05 web.1  | 74.86.158.106 - - [22/Mar/2012 21:47:05] "GET/HTTP/1.1" 200 31842 0.1993 
21:47:05 web.1  | E, [2012-03-22T21:47:05.546848 #18938] ERROR -- : app error: Content-Length header was 31842, but should be 0 (Rack::Lint::LintError) 
21:47:05 web.1  | E, [2012-03-22T21:47:05.546978 #18938] ERROR -- : /Users/username/.rvm/gems/[email protected]/gems/rack-1.3.6/lib/rack/lint.rb:19:in `assert' 
21:47:05 web.1  | E, [2012-03-22T21:47:05.547079 #18938] ERROR -- : /Users/username/.rvm/gems/[email protected]/gems/rack-1.3.6/lib/rack/lint.rb:501:in `verify_content_length' 
21:47:05 web.1  | E, [2012-03-22T21:47:05.547178 #18938] ERROR -- : /Users/username/.rvm/gems/[email protected]/gems/rack-1.3.6/lib/rack/lint.rb:525:in `each' 
21:47:05 web.1  | E, [2012-03-22T21:47:05.547277 #18938] ERROR -- : /Users/username/.rvm/gems/[email protected]/gems/rack-1.3.6/lib/rack/body_proxy.rb:23:in `method_missing' 
21:47:05 web.1  | E, [2012-03-22T21:47:05.547375 #18938] ERROR -- : /Users/username/.rvm/gems/[email protected]/gems/unicorn-4.2.0/lib/unicorn/http_response.rb:41:in `http_response_write' 
21:47:05 web.1  | E, [2012-03-22T21:47:05.547476 #18938] ERROR -- : /Users/username/.rvm/gems/[email protected]/gems/unicorn-4.2.0/lib/unicorn/http_server.rb:538:in `process_client' 
21:47:05 web.1  | E, [2012-03-22T21:47:05.547574 #18938] ERROR -- : /Users/username/.rvm/gems/[email protected]/gems/unicorn-4.2.0/lib/unicorn/http_server.rb:604:in `worker_loop' 
21:47:05 web.1  | E, [2012-03-22T21:47:05.547672 #18938] ERROR -- : /Users/username/.rvm/gems/[email protected]/gems/unicorn-4.2.0/lib/unicorn/http_server.rb:487:in `spawn_missing_workers' 
21:47:05 web.1  | E, [2012-03-22T21:47:05.547770 #18938] ERROR -- : /Users/username/.rvm/gems/[email protected]/gems/unicorn-4.2.0/lib/unicorn/http_server.rb:137:in `start' 
21:47:05 web.1  | E, [2012-03-22T21:47:05.547867 #18938] ERROR -- : /Users/username/.rvm/gems/[email protected]/gems/unicorn-4.2.0/bin/unicorn:121:in `<top (required)>' 
21:47:05 web.1  | E, [2012-03-22T21:47:05.547966 #18938] ERROR -- : /Users/username/.rvm/gems/[email protected]/bin/unicorn:19:in `load' 
21:47:05 web.1  | E, [2012-03-22T21:47:05.548063 #18938] ERROR -- : /Users/username/.rvm/gems/[email protected]/bin/unicorn:19:in `<main>' 

Bất kỳ ý tưởng về những gì có thể xảy ra đây? Tôi thực sự không tìm thấy một giải pháp ngay bây giờ mà cụ thể địa chỉ những gì phải làm trong kịch bản này như xa như poking và săn lùng những gì thực sự có thể xảy ra.

Trả lời

1

Tôi biết đó là một câu hỏi cũ, nhưng tôi có cùng một vấn đề chính xác. Các yêu cầu từ UptimeRobot và Relic mới (và chỉ từ các IP từ hai) cung cấp các thông điệp tường trình này.

Cả báo cáo UptimeRobot và NewRelic 'OK'.

Dường như đó không phải là yêu cầu mà Rack::Lint đang khiếu nại, nhưng phản hồi. Nhìn vào stacktrace. Nó đi qua http_response_write của kỳ lân (tôi cũng sử dụng kỳ lân).

Tôi sẽ điều tra thêm và thêm bất kỳ phát hiện nào tại đây.

UPDATE:

tôi có thể tạo lại vấn đề với

$ curl https://example.com -X HEAD -i 
HTTP/1.1 200 OK 
Server: nginx/1.6.2 (Ubuntu) 
Date: Wed, 18 Nov 2015 09:17:11 GMT 
Content-Type: text/html; charset=utf-8 
Content-Length: 18422 
Connection: keep-alive 
Status: 200 OK 
... 

curl: (18) transfer closed with 18422 bytes remaining to read 

Vì vậy, có vẻ như Rails cũ của tôi không được hỗ trợ yêu cầu TRỤ đúng cách.

CẬP NHẬT: Tôi không thể tạo lại trên hộp lang thang của tôi hoặc trên máy chủ dàn dựng. Chỉ có sự khác biệt từ sản xuất mà tôi có thể nghĩ là SSL.

0

Dường như rô bốt của bạn đang gửi tiêu đề có giá trị sai. Cần gửi tiêu đề có nội dung là Nội dung dài với giá trị bằng 0 (hoặc không gửi được chút nào) nhưng gửi nó với 31842, có thể là sai.

Bạn có thể chuyển hướng đến một số máy chủ http khác, đổ tất cả các tiêu đề và xem lý do tại sao nó gửi hoặc chỉ thay đổi robot thời gian hoạt động của bạn thành không phải là.