Ubuntu в Virtualbox - веб-сервер WEBrick работает очень медленно при использовании локального IP-адреса

4580
Lenny Marnham

Я использую Ubuntu (Lucid Lynx) для изучения Ruby On Rails. Я использую Ubuntu в VirtualBox (хост - Windows 7 Ultimate), используя мостовую сеть.

Когда я запускаю свое приложение Rails и указываю на него браузер, используя localhost: 3000, приложение немедленно отвечает, и моя страница отображается за секунду или две.

Однако, если я использую 10.0.0.5:3000 (где 10.0.0.5 - мой IP-адрес, о котором сообщалось, что он используется ifconfig), ответ от моего приложения rails будет невероятно медленным - возможно, 30 секунд или больше, чтобы сервер ответил и отобразил страницу.

Это происходит как в Firefox, так и в Chrome. Кроме того, когда я запускаю приложение Rails с хоста (чтобы проверить его в IE), я получаю тот же отклик slooooooow.

Есть идеи, что может происходить? Я пробовал это с двумя различными маршрутизаторами, и в двух разных сетях (работа и дом) с тем же результатом.

Ура все.

7
Другие подключения к виртуальной коробке Ubuntu также очень медленные? Как насчет подключения другого пути, от виртуальной машины Ubuntu к хосту Windows? CarlF 14 лет назад 1
Я могу пропинговать гостя Ubuntu с хоста Windows, и ответы на пинг немедленно. Кроме того, соединения от гостевой системы Ubuntu к хосту Windows (например, к веб-сайту IIS в Windows) быстрые. Единственная медлительность - это когда я бью сервер Ubuntu Rails по IP-адресу. Использование `localhost` нормально. Lenny Marnham 14 лет назад 0
У меня та же проблема, но независимо от того, использую ли я localhost или числовой IP, ответы ужасно медленные. Загрузка каждого ресурса занимает пару секунд (изображение, js, что угодно). Я пробовал ублюдка, худого, единорога ... Я думаю, единственное решение - использовать пассажира под Apache, верно? emzero 13 лет назад 0
может быть связано с обратным поиском DNS. artistoex 13 лет назад 0
Эта статья может дать ответ: http://stackoverflow.com/questions/1156759/webrick-is-very-slow-to-respond-how-to-speed-it-up Etienne 10 лет назад 0
Просто подумал, что упомяну какой-нибудь важный SEO, я наткнулся на этот пост, используя поисковый термин slooooooow Jonathan Neufeld 9 лет назад 0

6 ответов на вопрос

8
James EJ

Попробуйте запустить

sudo service avahi-daemon stop

Также попробуйте установить WEBrick /usr/lib/ruby//webrick/config.rb

:DoNotReverseLookup => true

Также смотрите: «Stackoverflow WEBrick замедляется с удаленного рабочего стола»

+1 остановка авахи оказала немедленное влияние. Не могли бы вы объяснить, почему? Amro 12 лет назад 0
@ Амро, не уверен. [http://mercenary-code.blogspot.co.uk] (http://mercenary-code.blogspot.co.uk/2010/02/rails-235-slow-webrick.html) предложил это и упоминает об удалении символическая ссылка из /etc/rc3.d, чтобы она не перезапускалась. [Этот билет Маяка] (https://rails.lighthouseapp.com/projects/8994/tickets/2987-new-233-app-perf-very-poor-from-remote-machine) упоминает, что avahi пытается разрешить обратное отображение 127.0.0.255 вызывает тайм-аут. [http://qzdrproject.wordpress.com] (http://qzdrproject.wordpress.com/2008/08/27/troublesho-networking/) выполнил поиск в strace / wireshark, чтобы найти решение. James EJ 12 лет назад 0
Это сработало для меня, похоже, это вызвано обратным поиском, который в итоге истекает. Ed Bishop 11 лет назад 0
1
jana4u

Это проблема WEBrick, никаких проблем при использовании других веб-серверов.

Я попробовал Mongrel и Thin с Ruby on Rails 3.0.x, оба отлично работали.

Я предлагаю использовать Mongrel - просто добавьте его в свой Gemfile:

gem "mongrel" 

или вы можете установить его только для разработки и тестирования, чтобы не нарушать производство:

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

Теперь запустите сервер так же, как вы делали это раньше, и Mongrel запускается вместо WEBrick.

Если вы предпочитаете Thin, вам нужно запустить сервер с thin startили WEBrick будет запущен.

0
Joshua

У меня такая же проблема возникала как в VirtualBox, так и в VMware. Не уверен, в чем проблема ... он действует так, как будто сервер Rails ищет что-то, для чего нужно время ожидания? Сервер Rails сообщает о быстром времени рендеринга в журнале, но реагирует на каждый запрос вечно. Для меня это происходит как в Rails 2.3.8, так и в Rails 3.0.3 на одном конкретном экземпляре Ubuntu (пробовал как в VirtualBox, так и в VMware). У меня была другая виртуальная машина Ubuntu на другой коробке, у которой не было проблемы ...

После разочаровывающей погони за этим в течение некоторого времени я решил использовать Phusion Passenger в режиме разработки и Apache.

0
Steven Xu

Предупреждение: это не ответ (кроме предложения просто использовать Passenger), но я документирую свой собственный опыт, а также некоторые эксперименты, которые я провел, которые, надеюсь, помогут нам приблизиться к выводу.

У меня точно такая же проблема. Это произошло внезапно. У меня также есть подобное наблюдение с вами на фронте пинга. Мой гость Ubuntu также запускает обычный стек LAMP, и там нет абсолютно никаких проблем с обслуживанием. Кажется, что за то, что он стоит, unix_stream_data_waitвиновато (в основном?) В зависании. Я не могу разобрать, что это значит за тривиальным или как исследовать дальше.

Кажется, это не зависит от номера порта (перемещение рельсов на более низкий порт, как в rails s -p 30, не меняет проблему, а другие службы, настроенные на прослушивание порта 3000, не сталкиваются с такими же проблемами службы).

Это также, кажется, не зависит от кода приложения. Я попробовал это с голым приложением рельсов, и задержка появилась снова.

Задержка также, кажется, изменяется по продолжительности, что порождает потенциальную проблему с гипотезой, что Rails предсказуемо истекает.

Запросы, отправленные в одной и той же «партии», по-видимому, выполняются в одно и то же время. Это говорит о том, что что-то есть в интерфейсе между процессом Rails и сетевым обработчиком, где интерфейс просто чертовски медленен, но очищает его тарелку, когда транзакция в конце концов проходит.

В общем, странно, странно, странно.

Я просто пошел с пассажиром вместо.

0
zigomir

Этот действительно странный. Я обнаружил, что если я запускаю сервер rails из замазки, ответы намного быстрее, чем если бы я запускал его из окна VirtualBox ...

0
Samuel

Если вы используете WEBrick, вы можете попробовать использовать Thin. Добавьте тонкий в ваш Gemfile:

gem 'thin' 

и установите его, запустив:

bundle 

Запустите сервер, запустив:

thin start