ruby-on-rails - Ruby 内存使用量会增加,直到需要重新启动 docker 容器
问题描述
我有一个在 docker 容器内运行的 ruby on rails 应用程序。应用程序运行正常,但我们注意到 ruby 继续增加它的内存使用量,直到应用程序停止响应并且我们需要重新启动容器。寻找有关如何解决此问题的任何建议。
宝石文件
source 'https://rubygems.org'
# Rails Dependencies
# =====================================================
gem 'rails', '~> 5.2.6'
gem 'bundler'
gem 'rake', '~> 12.3'
gem 'puma', '~> 4.3'
gem 'mysql2', '>= 0.4.4', '< 0.6.0'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.2'
gem 'jquery-rails'
gem 'jbuilder', '~> 2.5'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'bootsnap', '>= 1.1.0', require: false
# OAI-PMH
# =====================================================
gem 'blacklight_oai_provider'
# Automatic Import
# =====================================================
gem 'whenever', require: false
# Hydra Dependencies
# =====================================================
gem 'active-fedora'
gem 'active-triples'
gem 'blacklight'
gem 'hydra-head'
gem 'ldp'
gem 'nokogiri'
gem 'solrizer'
gem 'rsolr'
gem 'devise'
gem 'devise-guests', '~> 0.5'
gem 'rdf', '<= 3.1.13'
# Capistrano
# =====================================================
# gem 'capistrano-rails'
# DEVELOPMENT AND TESTS ONLY
# =====================================================
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug'
gem 'rspec-rails'
gem 'jettywrapper'
gem 'listen'
gem 'fcrepo_wrapper', '~> 0.4'
gem 'solr_wrapper', '~> 2.0'
end
group :test do
gem 'factory_bot_rails'
end
group :development do
gem 'web-console', '~> 2.0'
gem 'spring'
end
dockerfile
FROM ruby:2.7.2
ENV BUNDLER_VERSION=2.2.27
ENV RAILS_VERSION=5.2.6
RUN mkdir -p /home/hydra
WORKDIR /home/hydra
ADD ./hydra /home/hydra
RUN apt-get update && apt-get -y install cron
# Use JEMALLOC instead
# JEMalloc is a faster garbage collection for Ruby.
# -------------------------------------------------------------------------------------------------
RUN apt-get install -y libjemalloc2 libjemalloc-dev
ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so
RUN \
gem update --system --quiet && \
gem install bundler -v ${BUNDLER_VERSION} && \
gem install rails -v ${RAILS_VERSION} && \
bundle install --jobs=4 --retry=3
# Node.js
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash - \
&& apt-get install -y nodejs
ADD ./startup.sh /usr/bin/
RUN chmod -v +x /usr/bin/startup.sh
ENTRYPOINT ["/usr/bin/startup.sh"]
解决方案
推荐阅读
- javascript - 如何显示非模态/非模态 HTML/JavaScript 对话
- c++ - 左移时的奇怪行为
- jquery - 如何使用 jQuery 更改按钮的文本?
- airflow - 有条件地一一执行多个分支
- mysql - 特色帖子/特色文章等的表格结构
- webrtc - 如何让 WebRTC 连接到对等点?
- javascript - 我发现一个错误无法在 fallbackResult 处读取 null 的属性“renderError”
- r - 使用可变数量的控件操作函数
- laravel - 在 Laravel 自定义控制台命令中获取身份验证结果
- android - Android Studio 对不同的类使用错误的不同 SDK 版本