7

Я использую 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.

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

Ура все.

6 ответов6

8

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

sudo service avahi-daemon stop

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

:DoNotReverseLookup => true

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

1

Это проблема 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

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

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

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

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

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

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

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

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

0

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

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

0

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

0

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

gem 'thin'

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

bundle

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

thin start

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .