Rails 3.1 на Ubuntu 11.10 под VirtualBox очень медленный - PullRequest
4 голосов
/ 29 декабря 2011

У меня есть VirtualBox с Ubuntu 11.10 на Windows7.Я запускаю Rails 3.1 на webrick (rails) и захожу на IP-адрес VirtualBox (192.168.2.xxx:3000) из браузера в Windows.В этот момент я сталкиваюсь с проблемами - страница загружается очень очень медленно, на консоли Rails я вижу, как медленно она отвечает на файлы (css, js, images): до 5 секунд для каждого!Но: если я иду 0.0.0.0:3000 внутри Ubuntu - он отлично работает.

В чем проблема?Где искать решение?

Ответы [ 6 ]

5 голосов
/ 21 августа 2012

Как упомянуто выше, похоже, что это дубликат другой проблемы, хотя в этой проблеме конкретно упоминаются webrick и подключение к удаленному рабочему столу, ни одного из которых я не искал, так как я не знал, что это было специфично для webrick.

Так что я думаю, что следует отметить, что это НЕ неверная конфигурация виртуальной машины или настроек BIOS или чего-то подобного.Это является строго проблемой вебрика.Другие службы работают нормально, если они не пытаются выполнить обратный поиск DNS.

Проблема связана с настройкой Webrick по умолчанию, чтобы попытаться выполнить обратный поиск DNS, который имеет проблемы при сбое поиска, так как это имеет тенденциюделать последовательно для меня на моей локальной машине.

Есть несколько способов исправить это.

Взломать / etc / hosts

Первый - взломать /etc/hostsпоэтому на вашем клиентском компьютере есть запись.Взлом /etc/hosts является полу-продвинутым, но в основном сводится к выяснению IP-адреса вашего хоста и добавлению строки в ваш файл /etc/hosts.Для этого требуются полномочия корневого уровня.

  • Получите ваш IP-адрес - это будет видно в консоли Rails при выполнении запроса и будет выглядеть примерно так: Started GET "/" for 10.0.2.2 at Tue Aug 21 11:33:23 -0700 2012 - в этом случае,IP-адрес 10.0.2.2.
  • Добавьте строку к /etc/hosts, чтобы определить этот IP-адрес: 10.0.2.2 Nerdmaster

Все должно быть хорошо!

Отключить демон

Похоже, это работает для некоторых пользователей Ubuntu:

service avahi-daemon stop

Учитывая, что вы убиваете службу, могут быть другие приложения, у которых есть проблемы.Это, вероятно, лучше всего как временная мера, а не как постоянная, но я очень мало знаю об услуге, поэтому не берите на себя слово:)

Для этого также требуются разрешения на уровне root.

Взломать Webrick

Я действительно презираю взлом ядра кода Ruby, который я должен повторно взламывать при каждом обновлении, но это то, что многие люди делают:

  • Найдите свойwebrick/config.rb
    • Может быть в /usr/lib/ruby/[version]/webrick/config.rb, если вы используете обычный Ruby
    • Если вы используете RVM, вам нужно будет найти соответствующий каталог ruby, например, /home/username/.rvm/rubies/[version]/lib/ruby/[version]/webrick/config.rb
    • Я не знаю, Джек, о других опциях, таких как rbenv
    • В худшем случае, попробуйте find / -type d -name "webrick"
  • Редактировать в своем любимом редакторе (очевидно, это будет vim)
    • Ищите :DoNotReverseLookup => nil.
    • Измените nil на true.
    • Если вы не видите эту настройку, вы можетеиспользовать хак /etc/hosts выше.

Если вы не используете rvm или что-то подобное, для этого потребуется pe уровня rootrmissions.

Не используйте webrick

Я не думаю, что это реальное решение, поскольку webrick иногда является вашим лучшим (или, по крайней мере, самым быстрым) вариантом, но вы можете попробовать другойсервер.Тонкий и монгрел, кажется, имеют хорошую поддержку и, основываясь на том, что говорят другие с этой проблемой, похоже, не делают обратного поиска DNS.Я не пробовал эти подходы, поэтому точно не знаю, насколько они хороши.

Это можно сделать без прав доступа root.

1 голос
/ 11 августа 2017

Я использую Windows10 Home Edition с 8 RAM, 250g SSD, когда я запускаю Rails4.x (тонкий) на Virtual Box с Ubuntu Server 16, я обнаружил, что время рендеринга очень медленно, в основном до 4 - 5 секунд,наконец, я переместил проект rails из общей папки хоста в Virtualbox vm внутри, теперь он стал намного быстрее.

1 голос
/ 10 декабря 2013

Для меня медлительность Rails 4 (1 секунда + для каждого ресурса 304) на гостевой виртуальной машине Ubuntu оказалась Виртуальные папки общего доступа .Обнаружил, что причина в этой теме , удаление от общих папок, исправило проблему скорости для меня.

1 голос
/ 23 января 2012

Отредактируйте свой Gemfile, добавив:

gem 'mongrel'

bundle install

rails s -> will use mongrel instead of webrick and be lightning fast.
0 голосов
/ 10 июля 2013

Мне понравился ответ Скотта о переходе на mongrel, но если вы используете современную версию ruby ​​(> 1.9.1), mongrel больше не поддерживается. ( Установить Mongrel в Ruby 1.9.3 )

Я переключился на тонкий - http://code.macournoyer.com/thin/

sudo gem install thin

тонкий старт

и это очень быстро для меня.

0 голосов
/ 29 декабря 2011

Попробуйте отключить брандмауэр или антивирус в Windows.

...