Сервер Rails чрезвычайно медленный в разработке - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть приложение rails 5, которое очень медленно работает после загрузки сервера или изменения файла .rb.Ниже приведен мой отчет о работе после того, как я загрузил сервер с rails server и загрузил простую страницу.Кроме того, если я меняю модель, контроллер или помощника, серверу требуется примерно столько же времени, чтобы ответить на следующий запрос.После загрузки запроса страницы загружаются нормально, но этот первый запрос после каждого изменения может занять 30 секунд, что складывается довольно быстро.Я попытался установить следующие конфиги в `development (похожие вопросы предлагали эти изменения).Кроме того, у меня есть этот сервер разработки, работающий на цифровой океанской капле с 4 ГБ памяти.

config.assets.debug = false
config.assets.digest = false

Мой вывод:

rails server
=> Booting Puma
=> Rails 5.2.2 application starting in development
=> Run rails server -h for more startup options
Puma starting in single mode...
* Version 3.12.0 (ruby 2.5.3-p105), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop
Started GET "/treadmill-parts-model-select" for 98.251.169.224 at 2019-04-03 
11:51:29 +0000
Cannot render console from 98.251.169.224! Allowed networks: 127.0.0.1, ::1, 
127.0.0.0/127.255.255.255
(2.1ms)  SET NAMES utf8,  @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, 
',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'),  
@@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483
↳ /usr/local/rvm/gems/ruby-2.5.3/gems/activerecord- 
5.2.2/lib/active_record/log_subscriber.rb:98
(2.4ms)  SELECT 'schema_migrations'.'version' FROM 'schema_migrations' ORDER 
BY 'schema_migrations'.'version' ASC
↳ /usr/local/rvm/gems/ruby-2.5.3/gems/activerecord- 
5.2.2/lib/active_record/log_subscriber.rb:98
Processing by SearchController#treadmill_model_search as HTML
  Rendering search/treadmill_model_search.html.erb within layouts/application
  Product Load (113.8ms)  SELECT DISTINCT 'products'.'brand' FROM 'products' WHERE 'products'.'product_type' = 'Treadmill' ORDER BY 'products'.'brand' ASC
  ↳ app/views/search/treadmill_model_search.html.erb:22
  Rendered search/treadmill_model_search.html.erb within layouts/application (167.6ms)
  Rendered layouts/_header.html.erb (5.8ms)
  Rendered layouts/_flash_messages.html.erb (1.1ms)
  Rendered layouts/_footer.html.erb (0.5ms)
Completed 200 OK in 18746ms (Views: 18565.0ms | ActiveRecord: 124.7ms)`

1 Ответ

0 голосов
/ 03 апреля 2019

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

#config/environments/development.rb

  config.active_record.migration_error = false

может помочь с этой проверкой.

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

Как и в более крупных проектах, вы захотите остановить рельсы от предварительной загрузки всего кода, который не нужен, особенно если вы все равно работаете только над частью вашего проекта. Также в среде

#config/environments/development.rb

  # Do not eager load code on boot.
  config.eager_load = false

Подробнее об этих настройках конфигурации среды вы можете прочитать здесь

Хотя 4 ГБ памяти кажется красным флажком, если вы не работаете над масштабным проектом ... возможно, потребуется изучить инициализацию и то, что весь ваш проект загружается при загрузке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...