ruby - Puma 搭配 Padrino,CPU 消耗不会停止
问题描述
我有一个要解决的问题,我有一个用 Padrino 编写的 Ruby Web 项目,它是一个非常简单的项目。但是我在运行 Puma 时遇到了问题。
一切正常,但几天后,或者如果我进行压力测试,Puma 的进程正在消耗 100% 的 CPU 并永远停留在那里。我只需要重新启动 Puma(分别杀死它并重新开始)。
它发生在我的一些项目上,在 Debian Stretch 和 Jessie 上。
彪马版本是3.11.4
这是配置文件之一:
preload_app!
rackup 'config.ru'
environment 'production'
daemonize
pidfile 'logs/osadababa.pid'
state_path 'logs/puma.state'
stdout_redirect 'logs/stdout', 'logs/stderr', true
threads 4,6
bind 'ssl://0.0.0.0:8060?key=/etc/letsencrypt/live/osadababa.cz/privkey.pem&cert=/etc/letsencrypt/live/osadababa.cz/fullchain.pem'
tag 'osadababa-dev'
我很想知道为什么并解决这个烦人的问题,我尝试使用配置,但没有成功。现在有两个进程达到了 100%,但网站正在运行,只是在消耗资源。
你有这样的经历吗?请有任何建议。
编辑:
RubyGems Environment:
- RUBYGEMS VERSION: 2.7.7
- RUBY VERSION: 2.5.1 (2018-03-29 patchlevel 57) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/local/rvm/gems/ruby-2.5.1
- USER INSTALLATION DIRECTORY: /root/.gem/ruby/2.5.0
- RUBY EXECUTABLE: /usr/local/rvm/rubies/ruby-2.5.1/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/rvm/gems/ruby-2.5.1/bin
- SPEC CACHE DIRECTORY: /root/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /usr/local/rvm/rubies/ruby-2.5.1/etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /usr/local/rvm/gems/ruby-2.5.1
- /usr/local/rvm/gems/ruby-2.5.1@global
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /opt/swift/build/swift-4.1.2-RELEASE-ubuntu14.04/usr/bin
- /usr/local/rvm/gems/ruby-2.5.1/bin
- /usr/local/rvm/gems/ruby-2.5.1@global/bin
- /usr/local/rvm/rubies/ruby-2.5.1/bin
- /usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
- /sbin
- /bin
- /usr/local/rvm/bin
我正在运行 ruby 2.5.1p57(2018-03-29 修订版 63029)[x86_64-linux]
使用来自 Debian 软件包发行版的 Puma。我会尝试升级,我会尝试创建一个简单的项目来测试是否也会出现问题。
解决方案
解决了!新版本的 puma 修复了这个问题。谢谢大家
推荐阅读
- powerbi - 了解使用变量计算度量
- sql - SQL 数据流上的运行平均值
- android - supportFragmentManager 不适用于 kotlin
- javascript - 使用带有状态的打字稿?当用户输入字符串以外的内容时,我如何进行类型检查,我目前对打字稿很陌生
- java - 如何等待多个 Flux 和 Mono 发布者同时完成
- python - 桌面上路径的python字符串
- javascript - 输入字段值在一个区域工作而不在另一个区域工作
- typescript - 从导出的 Typescript 命名空间导入接口
- go - 反转二叉树:如何正确交换整个左树和右树
- swift - 如何指定哪个构建目标包含特定的 swift 包依赖项?