88 votes

Webrick est très lent à répondre. Comment l'accélérer ?

J'ai une application Rails que j'exécute sur mon serveur. Lorsque je me rends sur un bureau distant et que j'essaie de charger l'application, le serveur met 3 à 4 minutes pour répondre avec une simple page HTML. Cependant, lorsque je charge la page localement sur le serveur, la page s'affiche en une seconde seulement. J'ai essayé d'envoyer un ping au serveur à partir de mon bureau à distance et les pings sont envoyés avec succès dans un délai raisonnable.

Tout cela semble avoir commencé après que j'ai installé le client de base d'Oracle et SQLPLUS. Dois-je soupçonner Oracle ? Quelqu'un a-t-il déjà rencontré un problème similaire ?

139voto

Mosty Mostacho Points 22803

J'ai le même problème ici (même un an plus tard). Sous linux, vous devez faire ce qui suit :

Recherchez le fichier /usr/lib/ruby/1.9.1/webrick/config.rb et éditez-le.

Remplacer la ligne

:DoNotReverseLookup => nil,

avec

:DoNotReverseLookup => true,

Redémarrez webrick et cela fonctionnera comme un charme :)

36voto

Prof. Falken Points 10242

J'ai eu le même problème. Pour moi, ce poste a tenu la solution. Si vous êtes sur Ubuntu, arrêtez (ou désinstallez) le démon avahi. service avahi-daemon stop arrête le démon.

Webrick se sent maintenant très rapide.

Le problème a un ancien rapport dans Rails Lighthouse Cependant, les RdR se sont déplacés leurs billets sur github depuis lors. C'est un peu dommage que ce vieux problème persiste encore.

Soyez conscient cependant, que si vous utiliser avahi-daemon pour quelque chose, comme trouver des imprimantes et des scanners sur votre réseau, ça ne fonctionnera plus.

23voto

Kjellski Points 571

J'ai eu le même problème. Le site

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

a fait l'affaire pour moi aussi. Au cas où vous utilisez ruby sous rvm, voici le chemin à suivre :

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

15voto

Jamon Holmgren Points 7176

"Thin" est maintenant une excellente option pour fonctionner à la fois localement et localement. et sur Heroku :

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

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

Vous pouvez l'utiliser localement en le mettant dans votre Gemfile :

gem "thin"

... et ensuite exécuter bundle et démarrer votre serveur avec thin start ou rails s .

Mise à jour sur Heroku

La minceur est désormais considérée comme un mauvais pour Heroku. Plus d'informations ici :

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

Leur recommandation :

Passez à un backend web concurrent comme Unicorn ou Puma sur JRuby, qui permet au dyno de gérer sa propre file d'attente de requêtes et d'éviter de bloquer les longues requêtes.

6voto

mackenir Points 4271

J'avais un problème vaguement similaire qui se manifestait lors de l'accès à un serveur WEBrick via un VPN. Les requêtes prenaient beaucoup de temps, la plupart du temps sans que rien ne se passe sur le fil. Puisque ni l mongrel ni thin Des joyaux ont travaillé avec Ruby1.9 sur Windows et il était hors de question que je m'embarque dans la compilation des sources, je devais m'en tenir à WEBrick.

La solution consistait à définir le paramètre de configuration DoNotReverseLookup à true lors de la création du serveur WEBrick :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X