我有一个运行在 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 service或 upstart service .
更新:
看来你可以用rbenv-vars设置你的环境.
在你的 Rails 项目中创建一个 .rbenv-vars
文件
JAVA_OPTS='-Xss4096k -Xmx2048m'
然后您的环境应该传播到 puma
守护程序。