2012-03-23 16 views
5

he notado que ciertas peticiones, sobre todo de tiempo de actividad del robot para probar la página tiempo de actividad han comenzado recientemente generado el siguiente error de pelusa en mi rack Rieles 3.1.x aplicación:Cómo resolver los errores de 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>' 

Alguna idea de lo que puede estar pasando ¿aquí? Realmente no estoy encontrando una solución en este momento que aborde específicamente qué hacer en este escenario en cuanto a hurgar y buscar lo que realmente está sucediendo.

Respuesta

1

Sé que es una vieja pregunta, pero tengo exactamente el mismo problema. Las solicitudes de UptimeRobot y New Relic (y solo de direcciones IP de esos dos) dan estos mensajes de registro.

Tanto UptimeRobot como NewRelic informan 'OK'.

Parece que no es la solicitud que Rack::Lint se queja, pero la respuesta. Mira el stacktrace. Viene a través de http_response_write de unicornio (yo también uso unicornio).

Voy a investigar más y añadir los resultados aquí.

ACTUALIZACIÓN:

soy capaz de reproducir el problema con

$ 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 

lo que parece que mi viejo Carriles no está apoyando solicitudes cabeza correctamente.

ACTUALIZACIÓN: No puedo reproducir en mi caja vagabunda o en el servidor de transición. La única diferencia con la producción que puedo pensar es SSL.

0

Parece que su robot Uptime está enviando un encabezado con el valor incorrecto. Debería enviar el encabezado Content-length con un valor de 0 (o no enviarlo en absoluto) pero lo está enviando con 31842, lo que probablemente sea incorrecto.

Puede dirigirlo a otro servidor http, volcar todos los encabezados y ver por qué lo está enviando o simplemente cambiar su robot de tiempo de actividad a no envíe este encabezado.

Cuestiones relacionadas