Приложение rails быстро на сервере, но медленно при доступе с другой машины - PullRequest
5 голосов
/ 13 апреля 2011

У меня есть приложение Rails, размещенное на сервере (под управлением Webrick).Когда я захожу на эту машину и получаю доступ к приложению (через localhost: 3000), приложение работает без сбоев.Но когда я пытаюсь получить доступ к приложению с другого компьютера (через имя хоста: 3000), приложение работает очень медленно.

Я не уверен, как решить проблему;есть ли причина, почему это будет иметь место?У меня также есть такие вещи, как база данных SQL-сервера, размещенная на том же сервере, и доступ к базе данных с других компьютеров работает нормально.

Обновление для добавления: серверный компьютер и другие компьютеры, к которым я пытаюсь получить доступ, все в корпоративной сети.

Ответы [ 5 ]

14 голосов
/ 14 июня 2011

Следующий ответ сработал для меня. Обратите внимание, что если вы используете rvm, ответ находится внизу.

Уэбрик очень медленно отвечает. Как это ускорить?

Найдите файл /usr/lib/ruby/1.9.1/webrick/config.rb и отредактируйте его.

Заменить строку

:DoNotReverseLookup => nil,

с

:DoNotReverseLookup => true,

RVM файл ~/.rvm/rubies/ruby-your-version/lib/ruby/your-version/webrick/config.rb

4 голосов
/ 13 апреля 2011

Наиболее очевидным ответом будет то, что проблема не в рельсах, а в хостинге вашего домена (т. Е. Ваш DNS работает очень медленно).

Попробуйте загрузить другое приложение (может быть, Sinatra «hello world») и посмотрите, проявляет ли оно те же симптомы.
Если да, виноват ваш провайдер домена.

Если проблема не устранена, увеличьте детализацию журналов и проверьте, не являются ли какие-либо запросы SQL очевидным узким местом.

Кроме того, проблема может быть в Webrick.Это просто не было предназначено для производства и может быть медленным, если несколько человек используют приложение одновременно.Попробуйте это на другом сервере.Apache - разумный выбор: http://www.modrails.com/

3 голосов
/ 10 января 2013

Я опаздываю на вечеринку, но вы можете использовать Тонкий вместо Вебрика.

просто добавьте в Gemfile

gem 'thin'
1 голос
/ 13 апреля 2011

Посмотрите на время отклика, указанное в вашем лог-файле rails.Если они одинаковы для локального и удаленного доступа, то вы знаете, что ваша проблема находится где-то еще в стеке (DNS, маршрутизация, программный брандмауэр и т.

1 голос
/ 13 апреля 2011

Webrick не самый быстрый в мире, я уверен, что он предназначен не для производства, а для локального тестирования.Когда вы подключаетесь к другому компьютеру, он находится в локальной сети или через Интернет?

...