Capistrano任务deploy:assets:precompile需要一个小时

在部署生产时遇到问题,资产预编译任务的执行环境需要太长时间(20至60分钟)

deploy:assets:precompile
      01 ~/.rvm/bin/rvm default do bundle exec rake assets:precompile --trace
      01 do bundle exec rake assets:precompile --trace
      01 Ruby enVironment Manager 1.29.9 (latest) (c) 2009-2017 Michal Papis,P…
      01
      01 ** Invoke assets:precompile (first_time)
      01 ** Invoke assets:environment (first_time)
      01 ** Execute assets:environment
      01 ** Invoke environment (first_time)
      01 ** Execute environment

在这一刻保持不变。 Strace输出类似这样的内容

 rubygems/request_set/lockfile.rb\331\"rubygems/bundler_version_finder.rb\264rubygems/resolver.rb\270rubygems/path_support.rb\267rubygems/uninstaller.rb\267rubygems/requirement.rb\272rubygems/version_option.rb\331 rubygems/local_remote_options.rb\331 rubygems/source_specific_file.rb\267rubygems/request_set.rb\331#rubygems/core_ext/kernel_require.rb\331 rubygems/core_ext/kernel_warn.rb\277rubygems/core_ext/kernel_gem.rb\264rubygems/platform.rb\271rubygems/uri_formatter.rb\331\"rubygems/install_update_options.rb\266rubygems/name_tuple.rb\262rubygems/errors.rb\265rubygems/util/list.rb\271rubygems/util/licenses.rb\277rubygems/gemcutter_utilities.rb\264rubygems/security.rb\267rubygems/mock_gem_ui.rb\277rubygems/installer_test_case.rb\267rubygems/source_list.rb\273rubygems/command_manager.rb\273rubygems/install_message.rb\331)rubygems/resolver/vendor_specification.rb\3319rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb\331=rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb\331Grubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb\331Mrubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb\3315rubygems/resolver/molinillo/lib/molinillo/resolver.rb\3317rubygems/resolver/molinillo/lib/molinillo/resolution.rb\3317rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb\331Krubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb\3313rubygems/resolver/molinillo/lib/molinillo/errors.rb\331Arubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb\331irubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb\331drubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb\331Hrubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb\331irubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb\331drubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb\331Rrubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb\331Qrubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb\331Arubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb\3312rubygems/resolver/molinillo/lib/molinillo/state.rb\331,rubygems/resolver/molinillo/lib/molinillo.rb\331\"rubygems/resolver/specification.rb\276rubygems/resolver/molinill"...,442032982) = 442032982

htop说CPU使用率接近100%。

所以看来问题出在为运行环境捆绑宝石上,但是我不知道该如何处理。当我部署到暂存阶段时,没有这种问题,并且在生产环境中运行rails conslole(我猜它们执行相同的gem加载)不会花费太多时间。

mfpaaa 回答:Capistrano任务deploy:assets:precompile需要一个小时

不建议在服务器上编译资产,您应该禁用它并在本地编译资产并提交资产,然后部署应用程序。 Rails guide for local assets compilation

本文链接:https://www.f2er.com/2859553.html

大家都在问