升级问题 [错误 137]

对于标准安装站点,在最近一次升级时出现了此错误日志:

********************************************************
*** 请耐心等待,下一步可能需要一段时间 ***
********************************************************
正在循环 Unicorn,以释放内存
正在重启 unicorn pid: 545
等待 Unicorn 重新加载。
等待 Unicorn 重新加载。。
等待 Unicorn 重新加载...
等待 Unicorn 重新加载....
等待 Unicorn 重新加载.....
等待 Unicorn 重新加载......
等待 Unicorn 重新加载.......
等待 Unicorn 重新加载........
等待 Unicorn 重新加载.........
等待 Unicorn 重新加载..........
等待 Unicorn 重新加载...........
等待 Unicorn 重新加载............
等待 Unicorn 重新加载.............
等待 Unicorn 重新加载..............
等待 Unicorn 重新加载...............
等待 Unicorn 重新加载................
等待 Unicorn 重新加载.................
等待 Unicorn 重新加载..................
等待 Unicorn 重新加载...................
等待 Unicorn 重新加载....................
等待 Unicorn 重新加载.....................
等待 Unicorn 重新加载......................
等待 Unicorn 重新加载.......................
正在使用 libv8-node 18.16.0.0 (x86_64-linux)
正在使用 method_source 1.0.0
正在使用 thor 1.3.0
正在使用 zeitwerk 2.6.12
正在使用 railties 7.0.7
正在使用 request_store 1.5.1
正在使用 lograge 0.14.0
正在使用 logstash-event 1.2.02
正在使用 logstash-logger 0.26.1
正在使用 logster 2.13.1
正在使用 lru_redux 1.1.0
正在使用 lz4-ruby 0.3.3
正在使用 maxminddb 0.1.22
正在使用 memory_profiler 1.0.1
正在使用 message_bus 4.3.8
正在使用 mini_racer 0.8.0
正在使用 redis 4.8.1
正在使用 sidekiq 6.5.12
正在使用 mini_scheduler 0.16.0
正在使用 mini_sql 1.5.0
正在使用 mini_suffix 0.3.3
正在使用 multi_json 1.15.0
正在使用 multi_xml 0.6.0
正在使用 mustache 1.1.1
正在使用 uri 0.13.0
正在使用 net-http 0.4.0
正在使用 nio4r 2.7.0
正在使用 version_gem 1.1.3
正在使用 oauth-tty 1.0.5
正在使用 snaky_hash 2.0.1
正在使用 oauth 1.1.0
正在使用 oauth2 1.4.11
正在使用 oj 3.16.3
正在使用 omniauth 1.9.2
正在使用 omniauth-oauth2 1.7.3
正在使用 omniauth-facebook 9.0.0
正在使用 omniauth-github 1.4.0
正在使用 omniauth-google-oauth2 0.8.2
正在使用 omniauth-oauth 1.2.0
正在使用 omniauth-twitter 1.4.0
正在使用 optimist 3.1.0
正在使用 pg 1.5.4
正在使用 pry 0.14.2
正在使用 pry-byebug 3.10.1
正在使用 pry-rails 0.3.9
正在使用 puma 6.4.0
正在使用 rack-mini-profiler 3.3.0
正在使用 rack-protection 3.1.0
正在使用 rails_failover 2.0.1
正在使用 rails_multisite 5.0.0
正在使用 raindrops 0.20.1
正在使用 rbtrace 0.5.1
正在使用 rchardet 1.8.0
正在使用 redis-namespace 1.11.0
正在使用 rexml 3.2.6
正在使用 rinku 2.0.6
正在使用 rotp 6.3.0
正在使用 rqrcode_core 1.2.0
正在使用 rqrcode 2.2.0
正在使用 rss 0.3.0
正在使用 rtlcss 0.2.1
正在使用 ruby-readability 0.7.0
正在使用 rubyzip 2.3.2
正在使用 sanitize 6.1.0
正在使用 sass-embedded 1.69.5 (x86_64-linux-gnu)
正在使用 sassc-embedded 1.68.6
正在使用 sprockets 3.7.2 来自 https://github.com/rails/sprockets (在 3.x@f4d3dae)
正在使用 sprockets-rails 3.4.2
正在使用 sshkey 3.0.0
正在使用 stackprof 0.2.25
正在使用 tzinfo-data 1.2023.4
正在使用 uglifier 4.2.0
正在使用 unicorn 6.1.0
正在使用 web-push 3.0.1
Bundle 完成!已安装 138 个 Gemfile 依赖项,共 171 个 gem。
'development' 和 'test' 组中的 Gem 未安装。
Bundled gems 已安装到 `./vendor/bundle`
您直接依赖的一个已安装 gem 正在寻求资助。
  运行 `bundle fund` 获取详细信息
$ yarn install
yarn install v1.22.19
[1/5] 正在验证 package.json...
[2/5] 正在解析包...
成功 已是最新版本。
$ yarn --cwd app/assets/javascripts $(node -e 'const argv = JSON.parse(process.env.npm_config_argv).original; const passthrough = [`--frozen-lockfile`, `-s`].filter(arg => argv.includes(arg)); console.log(passthrough.join(` `));')
yarn install v1.22.19
[1/4] 正在解析包...
warning Resolution 字段 "unset-value@2.0.1" 与请求的版本 "unset-value@^1.0.0" 不兼容
成功 已是最新版本。
$ ./run-patch-package
patch-package 8.0.0
正在应用补丁...
babel-plugin-debug-macros@0.3.4 ✔
content-tag@1.2.2 ✔
ember-cli@5.0.0 ✔
ember-this-fallback@0.4.0 (1 deprecation-name) ✔
ember-this-fallback@0.4.0 (2 themes) ✔
virtual-dom@2.1.1 ✔
完成于 4.79s。
完成于 7.25s。
$ LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all
docker_manager 已是最新兼容版本
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate
Multisite migrator 正在使用 1 个线程运行
正在迁移 default
正在播种 default
*** 正在打包资源。这需要一段时间 ***
$ bundle exec rake themes:update assets:precompile
正在检查 'Air Theme' 的 'default'... 从 b9d44745 更新到 85dc24d6
正在检查 'Modern Category + Group Boxes' 的 'default'... 已是最新版本
正在检查 'Discourse Clickable Topic' 的 'default'... 已是最新版本
正在检查 'discourse-search-banner' 的 'default'... 从 934e0d35 更新到 6ba0e9d0
Node.js heap_size_limit (488.25) 小于 2048MB。正在设置 --max-old-space-size=2048。
yarn run v1.22.19
$ /var/www/discourse/app/assets/javascripts/node_modules/.bin/ember build
正在构建
环境:development
WARNING: ember-test-selectors: 您正在使用不受支持的 ember-cli-babel 版本。data-test 属性不会自动从您的 JS 代码中剥离。
正在构建...
...[ConfigLoader]
...[Babel: @embroider/macros > applyPatches]
...[Babel: discourse-widget-hbs > applyPatches]
...[Babel: ember-source > applyPatches]
...[ember.js]
...[Babel: discourse-common > applyPatches]
...[Babel: truth-helpers > applyPatches]
...[Babel: ember-tracked-storage-polyfill > applyPatches]
...[Babel: @ember/legacy-built-in-components > applyPatches]
...[Babel: @ember/render-modifiers > applyPatches]
...[Babel: @ember/test-helpers > applyPatches]
...[Babel: @ember/test-waiters > applyPatches]
...[Babel: @embroider/util > applyPatches]
...[Babel: @glimmer/component > applyPatches]
...[Babel: dialog-holder > applyPatches]
...[Babel: ember-this-fallback > applyPatches]
...[Babel: ember-buffered-proxy > applyPatches]
...[Babel: ember-cached-decorator-polyfill > applyPatches]
...[Babel: ember-exam > applyPatches]
...[Babel: ember-functions-as-helper-polyfill > applyPatches]
...[Babel: ember-load-initializers > applyPatches]
...[Babel: ember-on-resize-modifier > applyPatches]
...[Babel: ember-resize-observer-service > applyPatches]
...[Babel: ember-router-service-refresh-polyfill > applyPatches]
...[Babel: float-kit > applyPatches]
...[Babel: select-kit > applyPatches]
...[@embroider/compat/app]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
Killed
error 命令因退出代码 137 而失败。
info 访问 https://yarnpkg.com/en/docs/cli/run 获取有关此命令的文档。
Docker Manager: 升级失败
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:210:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:111:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.7/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.7/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/command.rb:28:in `run'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor.rb:527:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.7/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.7/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.7/lib/rails/commands.rb:18:in `<main>'
/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb:37:in `require'
/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb:37:in `require'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bootsnap-1.17.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'
正在启动 1 个最初已停止的 Unicorn 工作进程

似乎仍在处理升级,不确定这是否是严重问题,或者可以为此做些什么。

内存不足。
您需要添加交换空间或内存。
但您也可以重试,也许会成功。
如果您是从 UX 更新的,则应尝试命令行重建。

5 个赞

在使用 1 GB RAM 和 2 GB 交换空间(从 Web 界面升级)时遇到了同样的问题(升级到 3 GB 交换空间后,到目前为止,这次似乎可以正常工作(从 CLI 升级))。

3 个赞

谢谢,是的,这是一个 1GB 内存的服务器,看起来不再适合 Discourse 了,需要 2GB 才能正常工作。重启后更新安装可能现在可以正常工作了,看看它是否能完成。

不,又失败了。这是来自用户体验的,接下来我将尝试命令行。

您有多少内存和交换空间?

free -h

根据我的经验,如今在线更新至少需要 4GB 内存(3GB 也许勉强可以……)

显示 952 Mi 内存和 2.0 Gi 交换空间。不知道什么是交换空间?

升级似乎已从命令行 apt upgrade 成功完成

您的意思是,要在 UX 中运行更新,理想情况下需要 4 GB 内存才能正常工作?

不知道为什么这会占用比命令行更多的内存。

我有两个标准的 DigitalOcean 安装站点,总成本为每月 16.32 美元,这远低于为单个标准托管站点支付的每月 100 美元,但到目前为止还没有人注册,所以这是浪费,除非有人想加入,否则可能会关闭这些站点。

这似乎不正确。您想做什么?

在以 root 用户登录的控制台中,我输入命令“apt upgrade”,这会启动升级安装。

感谢 @Arkshine 在此提及:

不知道“Apt”是什么意思,但它似乎是此功能正常运行所必需的。

只是为了确认一下,您是否认为这是在升级您的 Discourse 还是您的服务器?

我以为已经升级了 Discourse,但也许升级的是 Ubuntu 服务器,不确定。

我认为您可以通过阅读更多关于该主题的讨论来受益。如果您搜索 Documentation,或者进行一般性搜索,我认为您会找到大量信息来填补您知识上的空白。有大量的建议涵盖了您可以从中学习的基础知识。 :+1:

2 个赞

好的,还有很多东西要学。

2 个赞

错过了你写的重建可以重建应用程序。

这是官方指南:

是因为同时运行网站(尽管 Unicorn 数量较少)+ 执行构建会消耗大量内存吗?

我在我的服务器(3 个 VCPU,4GB)上尝试了这一点:

在线:

升级前 2.21 → 1.7,因为它释放了内存 → 构建期间峰值为 3.5 (GB)

Swap 也增加了约 200MB,峰值约为 800MB

命令行(不完全可比,因为紧随上述操作之后)

升级前 1.7 → 下降到约 250MB! → 在资源编译期间攀升至峰值 3.25,但总体上低得多。

在几乎整个过程中,Swap 使用率都非常低。

注意:htop 中观察到的所有数字可能不准确,最好绘制图表。

我惊讶于离线重建的“峰值”如此之高。资源预编译肯定消耗大量内存 - 也许 VCPU 越多,消耗越多,因为它可能会并行处理一些任务?

我也惊讶于在我这种情况下峰值差异如此之小,尽管 Swap 使用率显著降低,而且总的来说,离线重建的内存使用量 低得多,在 95% 的过程中保持在几百 MB,而在线升级的最低内存使用量为 1.7GB。

2 个赞

这似乎是正确的,那里不需要问号!

那么重建应用程序然后自动更新到最新版本似乎是这样吗?

是否有支持或不支持的方式来保留之前版本的 Discourse 运行,或者为之前版本进行新安装?

不,但你可以通过更改为 stable 来减慢速度。

很遗憾,这次你错过了,因为你无法回退。

好的,可能需要更改为仅用于稳定测试更新的稳定设置,而不是开发人员/Beta 版的。正在寻找如何做到这一点。

1 个赞