首页 > 解决方案 > routes.rb 减慢启动速度

问题描述

我的 Rails 项目在生产服务器上生成了 1127 条路由,config/routes.rb
启动 puma 服务器或进入控制台大约需要 2.5 分钟。

我使用 bumbler 和其他工具来对环境进行基准测试。
什么都没有,这会减慢启动速度。

我想通了,当我删除config/routes.rb服务器中的所有路由时,会启动并在 2 秒内加载控制台。

这种规模的项目启动时间正常吗?(比较路线计数)有没有人知道是否有可能改进这一点?

// 延期:2020-05-12

routes.rb 包含一些单独文件中的路由:

require_relative 'routes/admin.rb'
require_relative 'routes/api.rb'
require_relative 'routes/backend.rb'
require_relative 'routes/demo.rb'
require_relative 'routes/group.rb'
require_relative 'routes/system.rb'
require_relative 'routes/partner.rb'
require_relative 'routes/sysop.rb'
require_relative 'routes/frontend.rb'

Rails.application.routes.draw do

  get '/', to: 'backend/business#index'
  get '/backend', to: 'backend/business#index'

  constraints SysopConstraint.new do
    mount Sidekiq::Web => '/sysop/sidekiq'
  end

  mount ActionCable.server => '/cable'

  extend AdminRoutes
  extend ApiRoutes
  extend BackendRoutes
  extend DemoRoutes
  extend GroupRoutes
  extend PartnerRoutes
  extend SystemRoutes
  extend SysopRoutes
  extend FrontendRoutes
end

我只是尝试通过用基准覆盖扩展来找出哪个文件需要最长的时间来加载。

list = [AdminRoutes, ApiRoutes, BackendRoutes, DemoRoutes, GroupRoutes, PartnerRoutes, SystemRoutes, SysopRoutes, FrontendRoutes]
Benchmark.bm do |bench|
  list.each do |route|
    bench.report(route.name) { extend route }
  end
end

首先,路线执行得非常快。然后一分钟没有输出,然后路由再次被执行,但这次慢得多。

有人可以解释一下启动应用程序时后台发生了什么吗?

=> Booting Puma
=> Rails 5.2.4.2 application starting in production
=> Run `rails server -h` for more startup options
              user     system      total        real
AdminRoutes     0.170508   0.000253   0.170761 (  0.170888)
ApiRoutes       0.776109   0.000345   0.776454 (  0.777914)
BackendRoutes   0.753472   0.011739   0.765211 (  0.766692)
DemoRoutes      0.005872   0.000158   0.006030 (  0.006032)
GroupRoutes     0.136586   0.000373   0.136959 (  0.136977)
PartnerRoutes   0.060478   0.000000   0.060478 (  0.060480)
SystemRoutes    0.005102   0.000000   0.005102 (  0.005111)
SysopRoutes     0.018995   0.000000   0.018995 (  0.018997)
FrontendRoutes  0.004853   0.000000   0.004853 (  0.004856)
              user     system      total        real
AdminRoutes    10.353290   0.000000  10.353290 ( 10.380565)
ApiRoutes      39.384480   1.441894  40.826374 ( 41.155395)
BackendRoutes  54.539170   0.343206  54.882376 ( 55.264573)
DemoRoutes      0.592922   0.008005   0.600927 (  0.601244)
GroupRoutes     8.710383   0.060063   8.770446 (  8.782207)
PartnerRoutes   4.623054   0.015728   4.638782 (  4.677382)
SystemRoutes    0.397222   0.004065   0.401287 (  0.401317)
SysopRoutes     1.646245   0.007859   1.654104 (  1.654451)
FrontendRoutes  0.627315   0.020184   0.647499 (  0.650795)
Puma starting in single mode...
* Version 4.3.3 (ruby 2.6.6-p146), codename: Mysterious Traveller
* Min threads: 2, max threads: 2
* Environment: production
* Listening on tcp://0.0.0.0:3000

标签: ruby-on-railsperformancerack

解决方案


推荐阅读