Ubuntu in Virtualbox - WEBrick-Webserver ist bei Verwendung einer lokalen IP-Adresse sehr langsam

4668
Lenny Marnham

Ich benutze Ubuntu (Lucid Lynx), um Ruby On Rails zu lernen. Ich verwende Ubuntu in VirtualBox (der Host ist Windows 7 Ultimate) und verwende Bridged Networking.

Wenn ich meine Rails-App starte und den Browser mit localhost: 3000 darauf zeige, antwortet die App sofort und meine Seite wird in ein oder zwei Sekunden gerendert.

Wenn ich jedoch 10.0.0.5:3000 verwende (wobei 10.0.0.5 meine angegebene IP-Adresse ist ifconfig), ist die Antwort meiner Rails-App unglaublich langsam - vielleicht 30 Sekunden oder länger, bis der Server antwortet und die Seite rendert .

Dies geschieht sowohl in Firefox als auch in Chrome. Wenn ich die Rails-App vom Host aus anschlage (um sie im IE zu testen), erhalte ich dieselbe slooooooow-Antwort.

Irgendwelche Ideen, was los sein könnte? Ich habe es mit zwei verschiedenen Routern ausprobiert und auf zwei verschiedenen Netzwerken (Arbeit und Zuhause) mit dem gleichen Ergebnis.

Prost alle.

7
Sind andere Verbindungen zur virtuellen Ubuntu-Box auch sehr langsam? Wie wäre es, wenn Sie von der Ubuntu-VM auf den Windows-Host umschalten? CarlF vor 13 Jahren 1
Ich kann den Ubuntu-Gast vom Windows-Host aus pingen, und die Ping-Antworten sind umgehend. Auch die Verbindungen vom Ubuntu-Gast zum Windows-Host (z. B. zu einer IIS-Website unter Windows) sind schnell. Die einzige Langsamkeit ist, wenn ich den Ubuntu Rails-Server mit der IP-Adresse anschlage. Verwenden Sie `localhost` ist in Ordnung. Lenny Marnham vor 13 Jahren 0
Ich habe das gleiche Problem, aber egal ob ich 'localhost' oder die numerische IP-Adresse verwende, die Antworten sind fürchterlich langsam. Es dauert ein paar Sekunden, um jede Ressource zu laden (ein Bild, ein JS, was auch immer). Ich habe Mongrel, Thin, Einhorn ausprobiert ... Ich denke, die einzige Lösung besteht darin, Passagier unter Apache zu verwenden, oder? emzero vor 13 Jahren 0
könnte sich auf Reverse DNS-Lookups beziehen. artistoex vor 12 Jahren 0
Dieser Artikel enthält möglicherweise eine Antwort: http://stackoverflow.com/questions/1156759/webrick-is-very-slow-to-respond-how-to-speed-it-up Etienne vor 10 Jahren 0
Ich dachte nur, ich würde einige wichtige SEOs erwähnen. Ich stieß auf diesen Beitrag mit dem Suchbegriff "slooooooow". Jonathan Neufeld vor 8 Jahren 0

6 Antworten auf die Frage

8
James EJ

Versuchen Sie zu laufen

sudo service avahi-daemon stop

Versuchen Sie auch, WEBrick /usr/lib/ruby//webrick/config.rb einzustellen

:DoNotReverseLookup => true

Siehe auch: "Stackoverflow WEBrick langsam vom Remote-Desktop"

+1 Das Stoppen von Avahi hatte unmittelbare Auswirkungen. Könnten Sie eine Erklärung dafür geben? Amro vor 12 Jahren 0
@ Amro, nicht sicher. [http://mercenary-code.blogspot.co.uk] (http://mercenary-code.blogspot.co.uk/2010/02/rails-235-slow-webrick.html) schlug dies vor und erwähnt das Löschen der Symlink von /etc/rc3.d, damit es nicht neu gestartet wird. [Dieses Lighthouse-Ticket] (https://rails.lighthouseapp.com/projects/8994/tickets/2987-new-233-app-perf-very-poor-from-remote-machine) erwähnt Avahi, der versucht, die Umkehrung von zu lösen 127.0.0.255 verursacht ein Timeout. [http://qzdrproject.wordpress.com] (http://qzdrproject.wordpress.com/2008/08/27/troubleshu-net-networking/) hat in strace / wireshark gesucht, um die Lösung zu finden. James EJ vor 12 Jahren 0
Das hat für mich funktioniert, es scheint durch eine umgekehrte Suche verursacht worden zu sein, die schließlich ausfällt. Ed Bishop vor 10 Jahren 0
1
jana4u

It is WEBrick issue, no problems when you use other web servers.

I tried Mongrel and Thin with Ruby on Rails 3.0.x, both working great.

I suggest using Mongrel - simply add it to your Gemfile:

gem "mongrel" 

or you can set it only for development and test, not to break production:

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

Now start server same way as you did before and Mongrel starts instead of WEBrick.

If you prefer Thin, you need to start server with thin start or WEBrick will be started.

0
Joshua

Ich hatte das gleiche Problem sowohl unter VirtualBox als auch unter VMware. Sie sind sich nicht sicher, was das Problem ist ... es verhält sich so, als würde der Rails-Server nach etwas suchen, das abgelaufen sein muss? Der Rails-Server meldet schnelle Renderzeiten im Protokoll, aber es dauert ewig, auf jede Anforderung zu antworten. Dies geschieht in beiden Rails 2.3.8 und in Rails 3.0.3 auf einer bestimmten Ubuntu-Instanz (versucht unter VirtualBox und VMware). Ich hatte eine andere Ubuntu VM auf einer anderen Box, die das Problem nicht hatte ...

Nachdem ich dies einige Zeit frustrierend verfolgt hatte, ist meine Lösung der Einsatz von Phusion Passenger im Entwicklungsmodus und Apache.

0
Steven Xu

Achtung: Dies ist keine Antwort (abgesehen von dem Vorschlag, Passagiere zu verwenden), aber ich dokumentiere meine eigenen Erfahrungen sowie einige Experimente, die ich gemacht habe und die uns hoffentlich helfen, einer Schlussfolgerung näher zu kommen.

Ich habe genau das gleiche Problem. Es kam plötzlich auf. Ich habe auch eine ähnliche Beobachtung an der Ping-Front. Mein Ubuntu-Gast führt auch einen normalen LAMP-Stack aus, und es gibt absolut keine Serviceprobleme. Für das, was es wert ist, scheint unix_stream_data_waites (meistens?) Für den Hangup verantwortlich zu sein. Ich kann nicht wirklich analysieren, was dies über das Triviale hinaus bedeutet oder wie ich weiter nachforschen kann.

Dies scheint unabhängig von der Portnummer zu sein (das Verschieben der Schienen zu einem niedrigeren Port wie in rails s -p 30ändert das Problem nicht, und andere Dienste, die Port 3000 abhören, haben nicht die gleichen Serviceprobleme).

Es scheint auch unabhängig vom Anwendungscode zu sein. Ich habe es mit einer nackten Gleise-App ausprobiert, und die Verzögerung erschien wieder.

Die Verzögerung scheint ebenfalls in der Dauer zu variieren, was zu einem möglichen Problem mit der Hypothese führt, dass Rails vorhersehbar ein Zeitlimit hat.

Anfragen, die in derselben "Charge" gesendet werden, scheinen zur gleichen Zeit erfüllt zu sein. Dies deutet darauf hin, dass sich etwas in der Schnittstelle zwischen dem Rails-Prozess und dem Netzwerk-Handler befindet, bei dem die Schnittstelle verdammt langsam ist, sich aber von ihrem Platz befreit, wenn die Transaktion schließlich durchläuft.

Insgesamt komisch komisch komisch.

Ich bin nur mit dem Passagier gegangen .

0
zigomir

Dieser ist wirklich seltsam. Ich habe herausgefunden, dass, wenn ich Schienen-Server von Putty-Antworten aus gestartet habe, die Antworten viel schneller sind, als wenn ich sie vom VirtualBox-Fenster aus starte ...

0
Samuel

Wenn Sie WEBrick verwenden, können Sie stattdessen Thin verwenden. Dünne zu deinem Gemfile hinzufügen:

gem 'thin' 

und installieren Sie es, indem Sie Folgendes ausführen:

bundle 

Starten Sie den Server, indem Sie Folgendes ausführen:

thin start