ruby-on-rails oracle sqlplus webrick

ruby on rails - Webrick es muy lento en responder. ¿Cómo acelerarlo?



ruby-on-rails oracle (12)

"Thin" es ahora una gran opción para ejecutar localmente y en Heroku :

En Heroku: https://devcenter.heroku.com/articles/rails3#webserver

Sitio web: http://code.macournoyer.com/thin/

Puedes usarlo localmente colocando tu Gemfile:

gem "thin"

... y luego ejecuta bundle e inicia tu servidor con thin start o rails s .

Actualización sobre Heroku

Thin ahora se considera una mala opción para Heroku. Más información aquí:

https://blog.heroku.com/archives/2013/4/3/routing_and_web_performance_on_heroku_a_faq

Su recomendación:

Cambie a un servidor web simultáneo como Unicorn o Puma en JRuby, que permite que el banco de datos administre su propia cola de solicitudes y evite el bloqueo en solicitudes largas.

Tengo una aplicación de Rails que estoy ejecutando en mi servidor. Cuando voy a un escritorio remoto e intento cargar la aplicación, el servidor tarda unos buenos 3-4 minutos en responder con una página HTML simple. Sin embargo, cuando cargo la página localmente en el servidor, la página aparece en solo un segundo. Intenté hacer ping al servidor desde mi escritorio remoto y los pings están teniendo éxito en un tiempo razonable.

Todo parece haber comenzado después de instalar el cliente básico de Oracle y SQLPLUS. ¿Debería sospechar de Oracle? ¿Alguien ha experimentado algo similar a esto?


En mi situación probablemente rara, funcionó después de que descargué mis iptables, esto no tenía ningún efecto secundario porque no tenía ninguna regla personalizada (solo el predeterminado Ubuntu permite todo):

sudo iptables -F


Esta es una respuesta muy tardía, pero pasé gran parte del día depurando este mismo problema con Rails corriendo en Vagrant. Cambiar la búsqueda DNS inversa no mejoró en absoluto los tiempos de solicitud. Una combinación de dos cosas llevó mi carga de página de ~ 20 segundos a ~ 3 segundos en el modo de desarrollo:

Reemplace WEBrick con mongrel. Tenía que usar la versión preliminar o no se instalaría:

sudo gem install mongrel --pre

Luego agrégalo a mi Gemfile para dev:

group :test, :development do gem ''mongrel'' end

Comencé mi servidor así, entonces:

rails server mongrel -e development

Eso cortó unos segundos, 5 o 6 segundos, pero todavía era terriblemente lento. Esta fue la guinda del pastel : añada esto también al Gemfile:

group :development do gem ''rails-dev-boost'', :git => ''git://github.com/thedarkone/rails-dev-boost.git'' end


Este es un viejo hilo de preguntas y respuestas que me ayudó a resolver el problema :DoNotReverseLookup en una máquina virtual de desarrollo local y quería agregar información adicional. Esta página web explica el error de regresión en Ruby core que hace que este problema aparezca para algunos; el énfasis es mío; El largo y corto de todo esto es que hay una solicitud de extracción de GitHub para una solución básica de Ruby y espero que se apruebe y fusione en un breve lanzamiento de Ruby:

Después de unas horas de resolución de problemas, ¡resultó que sí! Aparentemente, en algún lugar a lo largo de la evolución de la lib estándar de Ruby de 1.8.6 a 2.0.0, WEBrick adquirió una nueva opción de configuración :DoNotReverseLookup que está establecida en nil de forma predeterminada. Luego, en las entrañas del código de procesamiento de solicitud de WEBrick, establece el indicador do_not_reverse_lookup en la instancia del socket de conexión entrante al valor de config[:DoNotReverseLookup] . Como este valor es nil , que es falso, el efecto es el mismo que establecerlo en false , anulando el Socket.do_not_reverse_lookup global Socket.do_not_reverse_lookup . Por lo tanto, a menos que tenga: DoNotReverseLookup => true en su configuración de WEBrick, siempre se realizará una búsqueda DNS inversa para cada conexión nueva, lo que podría causar una latencia grave.

Relacionado con este descubrimiento hay una solicitud de extracción de GitHub del autor que propone cómo reparar el problema en el código fuente de Ruby WEBrick: Corregir el error de regresión en la implementación de la opción de configuración de DoogleRrowseLookup de WEBrick: 731

La solución como se describe en la solicitud es cambiar la línea 181 en lib/webrick/server.rb de esto:

sock.do_not_reverse_lookup = config[:DoNotReverseLookup]

A esto:

unless config[:DoNotReverseLookup].nil?

Compartir aquí si alguien tropieza con este hilo de pregunta / respuesta bien considerado y está interesado en el progreso para resolver este problema en Ruby core. Esperemos que este tirón se fusione o el problema subyacente se trate de alguna manera en el próximo lanzamiento de Ruby; tal vez 2.1.6?


Experimenté retrasos de 10 segundos con frecuencia con Sinatra. Este fragmento me lo resolvió.

Agregue esto cerca de la parte superior de su archivo app.rb

class Rack::Handler::WEBrick class << self alias_method :run_original, :run end def self.run(app, options={}) options[:DoNotReverseLookup] = true run_original(app, options) end end

Ver source


Intentaba hacer esto con webrick en 1.8.7 y no pudimos encontrar la configuración para cambiar. Sin embargo, un truco que puede usar es agregar al archivo de hosts del servidor que se ejecuta, abrimos la dirección IP que está tratando de buscar de forma inversa.




Solo tuve el mismo problema. los

... :DoNotReverseLookup => true, ...

hizo el truco para mí también. En caso de que esté ejecutando Ruby bajo el rvm, aquí está el camino a seguir:

~/.rvm/rubies/ruby-<version>/lib/ruby/<version>/webrick/config.rb


Tenía el mismo problema. Para mí, esta publicación contiene la solución. Si está en Ubuntu, detenga (o desinstale) el avahi-daemon . service avahi-daemon stop detiene al daemon.

Webrick ahora se siente muy rápido.

El problema tiene un viejo informe en Rails Lighthouse , sin embargo, Ruby-on-Rails ha movido sus boletos a github desde entonces; Es desafortunado que este viejo problema persista aún.

Tenga en cuenta, sin embargo, que si realmente usa avahi-daemon para algo, como encontrar impresoras y escáneres en su red, eso ya no funcionará.


Tener el mismo problema aquí (incluso un año después). En Linux debes hacer lo siguiente:

Busque el archivo /usr/lib/ruby/1.9.1/webrick/config.rb y edítelo.

Reemplazar la línea

:DoNotReverseLookup => nil,

con

:DoNotReverseLookup => true,

Reinicie webrick y funcionará como un encanto :)


Tuve un problema vagamente similar que se manifestó al acceder a un servidor WEBrick a través de una VPN. Las solicitudes tomarían mucho tiempo, la mayor parte sin que ocurra nada en el cable. Dado que ni gemas mestizas ni gemas thin funcionaban con Ruby1.9 en Windows y no había forma de que me involucrara en la compilación de cosas desde el origen, tenía que seguir con WEBrick.

La solución fue establecer el parámetro de configuración DoNotReverseLookup en true al crear el servidor WEBrick:

server = HTTPServer.new {:DoNotReverseLookup => true, ...}