无法安装新版本的 jemalloc gem(在 heroku 上工作)



一段时间以来,我的Ruby on Rails应用程序(ruby 2.3.3, rails 4.2.10(一直遇到严重的内存问题,我想尝试gemjemalloc以及buildpackheroku-buildpack-jemalloc因为它似乎对其他人有很大帮助。

如果我只是添加:

gem 'jemalloc' 

在我的 Gemfile 中并运行它bundle install它有效,但我得到了1.0.1版本,这是 rubygems.org 上的最新版本。在 Heroku 上(成功(安装构建包后,我尝试上传我的应用程序,但它失败了

remote:  !
remote:  !     Could not detect rake tasks
remote:  !     ensure you can run `$ bundle exec rake -P` against your app
remote:  !     and using the production group of your Gemfile.
remote:  !     rake aborted!
remote:  !     LoadError: /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/vendor/bundle/ruby/2.3.0/gems/jemalloc-1.0.1/lib/jemalloc.so: undefined symbol: Init_jemalloc - /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/vendor/bundle/ruby/2.3.0/gems/jemalloc-1.0.1/lib/jemalloc.so
remote:  !     /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/vendor/bundle/ruby/2.3.0/gems/bundler-1.15.2/lib/bundler/runtime.rb:82:in `require'
remote:  !     /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/vendor/bundle/ruby/2.3.0/gems/bundler-1.15.2/lib/bundler/runtime.rb:82:in `block (2 levels) in require'
remote:  !     /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/vendor/bundle/ruby/2.3.0/gems/bundler-1.15.2/lib/bundler/runtime.rb:77:in `each'
remote:  !     /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/vendor/bundle/ruby/2.3.0/gems/bundler-1.15.2/lib/bundler/runtime.rb:77:in `block in require'
remote:  !     /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/vendor/bundle/ruby/2.3.0/gems/bundler-1.15.2/lib/bundler/runtime.rb:66:in `each'
remote:  !     /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/vendor/bundle/ruby/2.3.0/gems/bundler-1.15.2/lib/bundler/runtime.rb:66:in `require'
remote:  !     /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/vendor/bundle/ruby/2.3.0/gems/bundler-1.15.2/lib/bundler.rb:108:in `require'
remote:  !     /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/config/application.rb:7:in `<top (required)>'
remote:  !     /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/Rakefile:4:in `require'
remote:  !     /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/Rakefile:4:in `<top (required)>'
remote:  !     /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/vendor/bundle/ruby/2.3.0/gems/rake-12.3.3/lib/rake/rake_module.rb:29:in `load'
remote:  !     /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/vendor/bundle/ruby/2.3.0/gems/rake-12.3.3/lib/rake/rake_module.rb:29:in `load_rakefile'
remote:  !     /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/vendor/bundle/ruby/2.3.0/gems/rake-12.3.3/lib/rake/application.rb:703:in `raw_load_rakefile'
remote:  !     /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/vendor/bundle/ruby/2.3.0/gems/rake-12.3.3/lib/rake/application.rb:104:in `block in load_rakefile'
remote:  !     /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/vendor/bundle/ruby/2.3.0/gems/rake-12.3.3/lib/rake/application.rb:186:in `standard_exception_handling'
remote:  !     /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/vendor/bundle/ruby/2.3.0/gems/rake-12.3.3/lib/rake/application.rb:103:in `load_rakefile'
remote:  !     /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/vendor/bundle/ruby/2.3.0/gems/rake-12.3.3/lib/rake/application.rb:82:in `block in run'
remote:  !     /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/vendor/bundle/ruby/2.3.0/gems/rake-12.3.3/lib/rake/application.rb:186:in `standard_exception_handling'
remote:  !     /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/vendor/bundle/ruby/2.3.0/gems/rake-12.3.3/lib/rake/application.rb:80:in `run'
remote:  !     /tmp/build_c49fb2d1484e39d9a1e11c3b732d5119/vendor/bundle/ruby/2.3.0/gems/rake-12.3.3/exe/rake:27:in `<top (required)>'
remote:  !     vendor/bundle/bin/rake:17:in `load'
remote:  !     vendor/bundle/bin/rake:17:in `<main>' 

考虑到 rubygems.org 上的最新版本 1.0.1(我从那里获得所有其他宝石(是 2015 年的,据我所知,宝石 (https://github.com/jemalloc/jemalloc( 是 5.1.0 (?( 现在似乎 rubygems.org 由于某种原因没有最新版本。为什么,我想知道?

我假设这就是我对 heroku 的推动不起作用的原因,因为构建包似乎至少需要 jemalloc 的 3.x 版本才能工作,而不是我能在 rubygems.org 上找到的古老版本

。因此,我尝试使用以下方法直接从 github 下载 gem:

gem 'jemalloc' , :git => "https://github.com/jemalloc/jemalloc.git"

然后运行bundle install.这导致:

Fetching https://github.com/jemalloc/jemalloc.git
Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/.
Could not find gem 'jemalloc' in https://github.com/jemalloc/jemalloc.git (at master@ea6b3e9).
The source does not contain any versions of 'jemalloc'

令我惊讶。我不明白为什么这不起作用。

因此,我留下了一个 1.0.1 版本(我认为(不适用于我在 Heroku 上需要的构建包。

如何捆绑较新版本的 jemalloc 来完成这项工作?我错过了什么?

我还发现了有关 jemalloc 包含在 ruby 2.2.0 中的信息,这是否意味着它可能已经在我的应用程序中使用?我在我的 Rails 应用程序中没有对此进行任何配置。

最后,我只对在 Heroku 上的现场制作应用程序中使用 jemalloc 感兴趣,而不是在我的笔记本电脑本地开发版本中使用。

您引用的链接不是 gem 的存储库,因此您收到消息是有道理的:"找不到 gem 'jemalloc'"。

我认为你不需要宝石。尝试使用这个 heroku 构建包。确保设置 heroku env 变量:JEMALLOC_ENABLED = true and JEMALLOC_VERSION = 5.2.0

相关内容

  • 没有找到相关文章

最新更新