fix(ruby): upgrade to jemalloc2 (#338)

* fix: use jemalloc2

* test(ruby): add jemalloc example

* docs: update jemalloc docs

* test: snapshot update
This commit is contained in:
Michael Bianco
2026-03-12 12:27:48 -06:00
committed by GitHub
parent fa7d5ce430
commit 1b4469cb4f
19 changed files with 268 additions and 59 deletions
@@ -42,7 +42,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -131,7 +131,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -152,7 +152,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -163,8 +163,8 @@
],
"commands": [
{
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libjemalloc-dev libyaml-dev'",
"customName": "install apt packages: libjemalloc-dev libyaml-dev"
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libjemalloc2 libyaml-dev'",
"customName": "install apt packages: libjemalloc2 libyaml-dev"
}
],
"inputs": [
@@ -42,7 +42,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -131,7 +131,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -152,7 +152,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -163,8 +163,8 @@
],
"commands": [
{
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libjemalloc-dev libyaml-dev'",
"customName": "install apt packages: libjemalloc-dev libyaml-dev"
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libjemalloc2 libyaml-dev'",
"customName": "install apt packages: libjemalloc2 libyaml-dev"
}
],
"inputs": [
@@ -42,7 +42,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -131,7 +131,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -152,7 +152,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -163,8 +163,8 @@
],
"commands": [
{
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libatomic1 libjemalloc-dev libyaml-dev'",
"customName": "install apt packages: libatomic1 libjemalloc-dev libyaml-dev"
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libatomic1 libjemalloc2 libyaml-dev'",
"customName": "install apt packages: libatomic1 libjemalloc2 libyaml-dev"
}
],
"inputs": [
@@ -0,0 +1,178 @@
{
"caches": {
"apt": {
"directory": "/var/cache/apt",
"type": "locked"
},
"apt-lists": {
"directory": "/var/lib/apt/lists",
"type": "locked"
}
},
"deploy": {
"base": {
"step": "packages:apt:runtime"
},
"inputs": [
{
"include": [
"/mise/shims",
"/mise/installs",
"/usr/local/bin/mise",
"/etc/mise/config.toml",
"/root/.local/state/mise"
],
"step": "packages:mise"
},
{
"include": [
"/usr/local/bundle"
],
"step": "install"
},
{
"include": [
"/app"
],
"step": "build"
}
],
"startCommand": "ruby app.rb",
"variables": {
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
"steps": [
{
"caches": [
"apt",
"apt-lists"
],
"commands": [
{
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y cargo libjemalloc-dev libyaml-dev rustc'",
"customName": "install apt packages: cargo libjemalloc-dev libyaml-dev rustc"
}
],
"inputs": [
{
"image": "ghcr.io/railwayapp/railpack-builder:mise-2026.3.5"
}
],
"name": "packages:apt:build"
},
{
"assets": {
"mise.toml": "[mise.toml]"
},
"commands": [
{
"path": "/mise/shims"
},
{
"customName": "create mise config",
"name": "mise.toml",
"path": "/etc/mise/config.toml"
},
{
"cmd": "mise install",
"customName": "install mise packages: ruby"
}
],
"inputs": [
{
"step": "packages:apt:build"
}
],
"name": "packages:mise",
"variables": {
"MISE_CACHE_DIR": "/mise/cache",
"MISE_CONFIG_DIR": "/mise",
"MISE_DATA_DIR": "/mise",
"MISE_IDIOMATIC_VERSION_FILE_ENABLE_TOOLS": "python,node,ruby,elixir,go,java,yarn",
"MISE_INSTALLS_DIR": "/mise/installs",
"MISE_NODE_VERIFY": "false",
"MISE_PARANOID": "1",
"MISE_SHIMS_DIR": "/mise/shims",
"MISE_TRUSTED_CONFIG_PATHS": "/app"
}
},
{
"commands": [
{
"cmd": "gem install -N bundler:2.6.9"
},
{
"dest": "Gemfile",
"src": "Gemfile"
},
{
"dest": "Gemfile.lock",
"src": "Gemfile.lock"
},
{
"cmd": "bundle install"
},
{
"path": "/usr/local/bundle"
}
],
"inputs": [
{
"step": "packages:mise"
}
],
"name": "install",
"variables": {
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
{
"inputs": [
{
"step": "install"
},
{
"include": [
"."
],
"local": true
}
],
"name": "build",
"variables": {
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
{
"caches": [
"apt",
"apt-lists"
],
"commands": [
{
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libjemalloc2 libyaml-dev'",
"customName": "install apt packages: libjemalloc2 libyaml-dev"
}
],
"inputs": [
{
"image": "ghcr.io/railwayapp/railpack-runtime:mise-2026.3.5"
}
],
"name": "packages:apt:runtime"
}
]
}
@@ -42,7 +42,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -135,7 +135,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -156,7 +156,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -167,8 +167,8 @@
],
"commands": [
{
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libjemalloc-dev libyaml-dev'",
"customName": "install apt packages: libjemalloc-dev libyaml-dev"
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libjemalloc2 libyaml-dev'",
"customName": "install apt packages: libjemalloc2 libyaml-dev"
}
],
"inputs": [
@@ -42,7 +42,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -135,7 +135,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -156,7 +156,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -167,8 +167,8 @@
],
"commands": [
{
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libjemalloc-dev libyaml-dev'",
"customName": "install apt packages: libjemalloc-dev libyaml-dev"
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libjemalloc2 libyaml-dev'",
"customName": "install apt packages: libjemalloc2 libyaml-dev"
}
],
"inputs": [
@@ -42,7 +42,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -131,7 +131,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -152,7 +152,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -163,8 +163,8 @@
],
"commands": [
{
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libjemalloc-dev libyaml-dev'",
"customName": "install apt packages: libjemalloc-dev libyaml-dev"
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libjemalloc2 libyaml-dev'",
"customName": "install apt packages: libjemalloc2 libyaml-dev"
}
],
"inputs": [
@@ -43,7 +43,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -135,7 +135,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -161,7 +161,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -172,8 +172,8 @@
],
"commands": [
{
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libjemalloc-dev libyaml-dev'",
"customName": "install apt packages: libjemalloc-dev libyaml-dev"
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libjemalloc2 libyaml-dev'",
"customName": "install apt packages: libjemalloc2 libyaml-dev"
}
],
"inputs": [
@@ -43,7 +43,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -135,7 +135,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -164,7 +164,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -175,8 +175,8 @@
],
"commands": [
{
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y default-libmysqlclient-dev libicu-dev libjemalloc-dev libmagickwand-dev libpq-dev libvips-dev libxml2-dev libxslt-dev libyaml-dev'",
"customName": "install apt packages: default-libmysqlclient-dev libicu-dev libjemalloc-dev libmagickwand-dev libpq-dev libvips-dev libxml2-dev libxslt-dev libyaml-dev"
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y default-libmysqlclient-dev libicu-dev libjemalloc2 libmagickwand-dev libpq-dev libvips-dev libxml2-dev libxslt-dev libyaml-dev'",
"customName": "install apt packages: default-libmysqlclient-dev libicu-dev libjemalloc2 libmagickwand-dev libpq-dev libvips-dev libxml2-dev libxslt-dev libyaml-dev"
}
],
"inputs": [
@@ -42,7 +42,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -131,7 +131,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -152,7 +152,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -163,8 +163,8 @@
],
"commands": [
{
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libjemalloc-dev libyaml-dev'",
"customName": "install apt packages: libjemalloc-dev libyaml-dev"
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libjemalloc2 libyaml-dev'",
"customName": "install apt packages: libjemalloc2 libyaml-dev"
}
],
"inputs": [
@@ -42,7 +42,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -135,7 +135,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -156,7 +156,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -167,8 +167,8 @@
],
"commands": [
{
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libjemalloc-dev libyaml-dev'",
"customName": "install apt packages: libjemalloc-dev libyaml-dev"
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libjemalloc2 libyaml-dev'",
"customName": "install apt packages: libjemalloc2 libyaml-dev"
}
],
"inputs": [
@@ -66,7 +66,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -155,7 +155,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -263,7 +263,7 @@
"BUNDLE_GEMFILE": "/app/Gemfile",
"GEM_HOME": "/usr/local/bundle",
"GEM_PATH": "/usr/local/bundle",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
"MALLOC_ARENA_MAX": "2"
}
},
@@ -274,8 +274,8 @@
],
"commands": [
{
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libatomic1 libjemalloc-dev libyaml-dev'",
"customName": "install apt packages: libatomic1 libjemalloc-dev libyaml-dev"
"cmd": "sh -c 'apt-get update \u0026\u0026 apt-get install -y libatomic1 libjemalloc2 libyaml-dev'",
"customName": "install apt packages: libatomic1 libjemalloc2 libyaml-dev"
}
],
"inputs": [
+2 -2
View File
@@ -202,7 +202,7 @@ func (p *RubyProvider) Build(ctx *generate.GenerateContext, build *generate.Comm
}
func (p *RubyProvider) AddRuntimeDeps(ctx *generate.GenerateContext) {
packages := []string{"libyaml-dev", "libjemalloc-dev"}
packages := []string{"libyaml-dev", "libjemalloc2"}
if p.usesPostgres(ctx) {
packages = append(packages, "libpq-dev")
@@ -285,7 +285,7 @@ func (p *RubyProvider) GetRubyEnvVars(ctx *generate.GenerateContext) map[string]
"GEM_PATH": "/usr/local/bundle",
"GEM_HOME": "/usr/local/bundle",
"MALLOC_ARENA_MAX": "2",
"LD_PRELOAD": "/usr/lib/x86_64-linux-gnu/libjemalloc.so",
"LD_PRELOAD": "libjemalloc.so.2",
}
}
+3 -2
View File
@@ -30,6 +30,7 @@ BUNDLE_GEMFILE="/app/Gemfile"
GEM_PATH="/usr/local/bundle"
GEM_HOME="/usr/local/bundle"
MALLOC_ARENA_MAX="2"
LD_PRELOAD="libjemalloc.so.2"
```
## Configuration
@@ -115,8 +116,8 @@ section in your `Gemfile.lock` and installs that specific version.
Railpack includes several performance optimizations:
- **jemalloc**: Installs and configures `libjemalloc` for improved memory
allocation performance
- **jemalloc**: Installs `libjemalloc2` and preloads it via `LD_PRELOAD`
for improved memory allocation performance
- **YJIT**: For Ruby 3.2+, installs `rustc` and `cargo` required for YJIT
compilation support
+1
View File
@@ -0,0 +1 @@
source 'https://rubygems.org'
+12
View File
@@ -0,0 +1,12 @@
GEM
remote: https://rubygems.org/
specs:
PLATFORMS
arm64-darwin-24
ruby
DEPENDENCIES
BUNDLED WITH
2.6.9
+7
View File
@@ -0,0 +1,7 @@
# We check the memory map of the current process to see if the
# shared library is actually loaded.
if File.read("/proc/self/maps").include?("libjemalloc")
puts "jemalloc available"
else
puts "jemalloc not available"
end
+5
View File
@@ -0,0 +1,5 @@
{
"deploy": {
"startCommand": "ruby app.rb"
}
}
+5
View File
@@ -0,0 +1,5 @@
[
{
"expectedOutput": "jemalloc available"
}
]