gpt4 book ai didi

ruby-on-rails - 如何将 Java 选项传递给 Puma 守护进程?

转载 作者:行者123 更新时间:2023-12-02 01:23:56 29 4
gpt4 key购买 nike

我有一个运行在 jruby-9.0.4.0 上的 Rails 应用程序并使用 Puma 作为网络服务器。

我正在尝试增加 puma 的内存限制;当前标志是 -Xmx500m -Xss2048k .我添加了 _JAVA_OPTIONS=-Xss4096k -Xmx2048m到我的env和所有 jruby进程像rake assets:precompile一样使用它例如,puma实例本身没有。

部分 capistrano 跟踪

DEBUG [0aec947c] Command: cd 
/dummy/production/releases/20160707071111 && (
export RBENV_ROOT="/usr/local/rbenv" RBENV_VERSION="jruby-9.0.4.0"
RAILS_ENV="production" ; /usr/local/rbenv/bin/rbenv exec bundle exec
rake assets:precompile )

DEBUG [0aec947c] Picked up _JAVA_OPTIONS: -Xss4096k -Xmx2048m

config/puma.rb

# Min and Max threads per worker
threads 8, 512

# Default to production
rails_env = ENV['RAILS_ENV'] || 'production'
environment rails_env

app_dir = "/dummy/#{rails_env}/current"

# Set up socket location
bind "tcp://localhost:3000"

# Logging
stdout_redirect "#{app_dir}/log/puma.stdout.log", "#{app_dir}/log/puma.stderr.log", true

# Set master PID and state locations
pidfile "#{app_dir}/pids/puma.pid"
state_path "#{app_dir}/pids/puma.state"
activate_control_app

环境变量

JAVA_OPTS=-Xss4096k -Xmx2048m
_JAVA_OPTIONS=-Xss4096k -Xmx2048m
JAVA_HOME=/usr/lib/jvm/java-7-oracle-amd64

cat /proc/<pid>/environ 的输出

RBENV_ROOT=/usr/local/rbenvprevious=NUPSTART_JOB=rcPATH=/dummy/production/shared/bundle/jruby/2.2.0/bin:/usr/local/rbenv/versions/jruby-9.0.4.0/bin:/usr/local/rbenv/libexec:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/binPWD=/dummy/production/releases/20160707133222RBENV_DIR=/dummy/production/releases/20160707133222SUPERVISOR_SERVER_URL=unix:///var/run/supervisor.sockUPSTART_EVENTS=runlevelRUNLEVEL=2NLSPATH=/usr/dt/lib/nls/msg/%L/%N.catSUPERVISOR_PROCESS_NAME=dummyprocessSUPERVISOR_ENABLED=1XFILESEARCHPATH=/usr/dt/app-defaults/%L/DtSHLVL=0UPSTART_INSTANCE=PREVLEVEL=NRBENV_VERSION=jruby-9.0.4.0RBENV_HOOK_PATH=:/usr/local/rbenv/rbenv.d:/usr/local/etc/rbenv.d:/etc/rbenv.d:/usr/lib/rbenv/hooksrunlevel=2SUPERVISOR_GROUP_NAME=dummyprocessTERM=linuxRUBYOPT=-rbundler/setupRUBYLIB=/usr/local/rbenv/versions/jruby-9.0.4.0/lib/ruby/gems/shared/gems/bundler-1.11.2/libroot

机器是 8 核和 24GB 内存。

我怎样才能让 puma实例也拿起Java选项?

最佳答案

this blog post 中所述,您可以将 JVM 选项放在 JRUBY_OPTS 环境变量中。

在您的情况下,您可以在启动 Puma 守护进程之前设置变量:

export JRUBY_OPTS="-J-Xss4096k -J-Xmx2048m"

您也可以尝试通过设置 JAVA_OPTS 环境变量直接配置 JVM:

export JAVA_OPTS="-Xss4096k -Xmx2048m"

同时检查 puma 守护进程是如何启动的

cat /proc/<pid>/environ

您的环境不会传播到 Puma 守护程序。您需要了解 Puma 是如何启动的。它可能是一个 init.d serviceupstart service .

更新:

看来你可以用rbenv-vars设置你的环境.

在你的 Rails 项目中创建一个 .rbenv-vars 文件

JAVA_OPTS='-Xss4096k -Xmx2048m'

然后您的环境应该传播到 puma 守护程序。

关于ruby-on-rails - 如何将 Java 选项传递给 Puma 守护进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38240719/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com