ruby-on-rails - 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
解决方案
推荐阅读
- html - CSS 仅选择内容并排除跨度
- css - chartjs - 如何在底角添加边框半径
- python - Keras 验证准确性正在提高
- php - 如何将字段添加到通知 laravel
- sql-server - 确定与岛屿的连续一天可用性
- javascript - 里程/站点编号的输入掩码
- windows - 运行 Veeam PowersShell 脚本时服务器重启
- javascript - 我们如何用 R 语言绘制 Highcarts 组织结构图?
- excel - 使用 VBA 对命名的 Excel 范围进行排序,使用 DIM 来引用命名范围,我得到一个错误
- angular - Angular中的[value]和value有什么区别,检查null值的方法是什么?