مشكلة مع الترقية [error 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
اكتملت الحزمة! 138 تبعيات Gemfile، 171 جواهر مثبتة الآن.
لم يتم تثبيت الجواهر في مجموعات 'development' و 'test'.
تم تثبيت الجواهر المجمعة في `./vendor/bundle`
جمرة واحدة مثبتة تعتمد عليها مباشرة تبحث عن تمويل.
 - قم بتشغيل `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] حل الحزم...
تحذير حقل الدقة "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.79 ثانية.
تم الانتهاء في 7.25 ثانية.
$ LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all
docker_manager هو بالفعل في أحدث إصدار متوافق
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate
مهاجر Multisite يعمل باستخدام 1 خيط
ترحيل الافتراضي
تغذية الافتراضي
*** تجميع الأصول. سيستغرق هذا بعض الوقت ***
$ 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 (488.25) أقل من 2048 ميجابايت. تعيين --max-old-space-size=2048.
yarn run v1.22.19
$ /var/www/discourse/app/assets/javascripts/node_modules/.bin/ember build
بناء
البيئة: development
تحذير: ember-test-selectors: أنت تستخدم إصدارًا غير مدعوم من ember-cli-babel. لا يتم تجريد خصائص data-test تلقائيًا من رمز JavaScript الخاص بك.
بناء...
...[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]
تم القتل
خطأ فشل الأمر برمز الخروج 137.
معلومات قم بزيارة 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>'
<internal:/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
<internal:/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 تم إيقافه مبدئيًا

يبدو أنه لا يزال يعمل لمعالجة الترقية، لست متأكدًا مما إذا كان هذا يمثل مشكلة خطيرة أم ماذا يمكن فعله حيال ذلك.

نفاد الذاكرة.
ستحتاج إلى إضافة مساحة تبديل أو ذاكرة وصول عشوائي.
ولكن يمكنك أيضًا المحاولة مرة أخرى وقد ينجح الأمر.
إذا كنت تقوم بالتحديث من واجهة المستخدم، فيجب عليك تجربة إعادة بناء سطر الأوامر.

5 إعجابات

واجهت نفس المشكلة مع 1 جيجابايت من ذاكرة الوصول العشوائي (RAM) و 2 جيجابايت من مساحة التبديل (swap) (الترقية من واجهة الويب). قمت بزيادة مساحة التبديل إلى 3 جيجابايت، ويبدو حتى الآن أنها ستعمل هذه المرة (الترقية من سطر الأوامر).

3 إعجابات

شكرًا، نعم يبدو أن هذا الخادم بذاكرة 1 جيجابايت لم يعد مثاليًا لـ discourse، حيث يحتاج إلى 2 ليعمل بشكل صحيح. قد يكون تثبيت التحديث يعمل الآن بعد إعادة التشغيل، وسنرى ما إذا كان سيكتمل.

لا، فشل مرة أخرى. كان هذا من واجهة المستخدم الرسومية، سأجرب سطر الأوامر تالياً.

كم لديك من ذاكرة الوصول العشوائي (RAM) ومساحة التبديل (swap)؟

free -h

التحديثات عبر الإنترنت تتطلب 4 جيجابايت على الأقل في الوقت الحاضر حسب تجربتي (قد تنجح مع 3 …)

يقول 952 ميجابايت ذاكرة و 2.0 جيجابايت swap. لا أعرف ما هو swap؟

يبدو أن الترقيات نجحت من سطر الأوامر apt upgrade

هل تقصد أنه لتشغيل التحديثات عبر واجهة المستخدم الرسومية تحتاج إلى 4 جيجابايت بشكل مثالي لكي تعمل؟
لا أعرف لماذا يستهلك هذا ذاكرة أكبر من سطر الأوامر.
لدي موقعان قياسيان للتثبيت على DigitalOcean، التكلفة الإجمالية لهذين الموقعين هي 16.32 دولارًا شهريًا، وهذا أقل بكثير من دفع 100 دولار شهريًا لموقع واحد مستضاف قياسي، ولكن حتى الآن لم يكن هناك أي تسجيلات لتلك المواقع، لذا فهذا هدر ما لم يرغب الناس في الانضمام، فقد يغلقون تلك المواقع.

هذا لا يبدو صحيحًا. ماذا تحاول أن تفعل؟

في وحدة التحكم المسجل دخولك بصفتك الجذر، أقوم بكتابة الأمر “apt upgrade” وهذا يبدأ تثبيت الترقية.

بفضل @Arkshine لذكر ذلك هنا:

لا أعرف ماذا يعني “Apt”، ولكن يبدو أن هذا ضروري لكي يعمل هذا.

للتحقق فقط، هل تفترض أنك تقوم بترقية Discourse الخاص بك أم الخادم الخاص بك؟

حسنًا، كنت أعتقد أنني قمت بترقية ديسكورس، ولكن ربما كان خادم أوبونتو هو الذي تم ترقيته، لست متأكدًا.

أعتقد أنك قد تستفيد من قراءة المزيد من المواضيع حول هذا الموضوع. إذا قمت بالبحث في #documentation، أو مجرد بحث بشكل عام، أعتقد أنك ستجد الكثير من المعلومات التي يجب أن تساعد في سد الفجوات في معرفتك. هناك قدر كبير من النصائح التي تغطي الأساسيات التي يمكنك التعلم منها. :+1:

إعجابَين (2)

حسنا، هناك الكثير لتعلمه في هذا.

إعجابَين (2)

فاتني أنك كتبت إعادة بناء يمكنها إعادة بناء التطبيق.

هذا هو الدليل الرسمي:

لأن تشغيل الموقع (وإن كان بعدد أقل من اليونيكورن) + إجراء عملية بناء في نفس الوقت مكلف من حيث الذاكرة؟

لقد جربت هذا على خادمي (3 VCPU، 4 جيجابايت):

عبر الإنترنت:

2.21 قبل الترقية → 1.7 لأنها توفر الذاكرة → 3.5 ذروة أثناء البناء (جيجابايت)

ارتفع استخدام الـ Swap أيضًا بحوالي 200 ميجابايت ليصل إلى ذروة حوالي 800 ميجابايت

سطر الأوامر (ليس مقارنة مباشرة حيث أنه بعد ما سبق مباشرة)

1.7 قبل الترقية → ينخفض إلى حوالي 250 ميجابايت! → يرتفع ويرتفع ليصل إلى ذروة 3.25 أثناء تجميع الأصول، ولكنه بشكل عام أقل بكثير.

كان استخدام الـ Swap منخفضًا جدًا خلال العملية بأكملها تقريبًا.

تنويه: جميع الأرقام المرصودة في htop قد تكون غير دقيقة، ربما من الأفضل رسمها بيانيًا.

لقد فوجئت بمدى “ذروة” عمليات إعادة البناء غير المتصلة بالإنترنت. بالتأكيد، يتطلب تجميع الأصول الكثير من الذاكرة - ربما كلما زاد عدد وحدات المعالجة الافتراضية لديك، فقد يقوم ببعض ذلك بالتوازي؟

لقد فوجئت أيضًا بمدى قلة الفرق في الذروة في حالتي، على الرغم من أن استخدام الـ Swap كان أقل بكثير وبشكل عام، كان استخدام الذاكرة أقل بكثير لإعادة البناء غير المتصلة بالإنترنت، وظل في مئات الميجابايت خلال 95٪ من العملية، بينما كان الحد الأدنى للترقية عبر الإنترنت 1.7 جيجابايت.

إعجابَين (2)

هذا يبدو صحيحًا، لا حاجة لعلامة استفهام هناك!

إذًا، إعادة بناء التطبيق ثم التحديث تلقائيًا إلى أحدث إصدار يبدو كذلك؟

هل هناك طريقة مدعومة أو غير مدعومة للاحتفاظ بالإصدارات السابقة من ديسكورس قيد التشغيل، أو إجراء تثبيتات جديدة للإصدارات السابقة؟

لا، ولكن يمكنك إبطاء الأمور عن طريق التغيير إلى stable.

للأسف، لقد فاتك القطار هذه المرة حيث لا يمكنك العودة إلى الوراء.

حسنًا، قد ترغب في التغيير إلى هذا الإعداد المستقر للتحديثات المستقرة التي تم اختبارها فقط وليس تلك الخاصة بالمطورين/البيتا. أتطلع إلى معرفة كيفية القيام بذلك.

إعجاب واحد (1)