مرحبًا @david ،
هل ينخفض استخدام الذاكرة فورًا بعد انتهاء مهمة assets:build؟
لا. لقد بحثت أكثر ووجدت شيئًا غريبًا.
قبل تشغيل precompiling:build، كانت قائمة الإضافات كالتالي:
/var/www/discourse$ ls plugins/
automation discourse-akismet discourse-data-explorer discourse-hcaptcha discourse-microsoft-auth discourse-post-voting discourse-saved-searches discourse-user-notes styleguide
chat discourse-apple-auth discourse-details discourse-lazy-videos discourse-narrative-bot discourse-presence discourse-solved discourse-zendesk-plugin
checklist discourse-assign discourse-docs discourse-local-dates discourse-oauth2-basic discourse-prometheus discourse-subscriptions footnote
discourse-adplugin discourse-cakeday discourse-gamification discourse-login-with-amazon discourse-openid-connect discourse-reactions discourse-templates msgraph-poll-discourse-plugin
discourse-affiliate discourse-calendar discourse-github discourse-lti discourse-patreon discourse-rewind discourse-topic-trade-buttons poll
discourse-ai discourse-chat-integration discourse-graphviz discourse-math discourse-policy discourse-rss-polling discourse-topic-voting spoiler-alert
لاحظت السلوك التالي بعد تصحيح الكود (debugging):
/var/www/discourse$ script/rails runner "AssetProcessor.ember_version"
Plugin name is 'msgraph-polling', but plugin directory is named 'msgraph-poll-discourse-plugin'
# يتوقف هنا إلى الأبد
يتوافق AssetProcessor.ember_version مع السطر discourse/lib/plugin/js_manager.rb at latest · discourse/discourse · GitHub
لذلك قمت ببعض التعديلات على هذا الملف (مرفق)، بهدف طباعة المكان الذي يتعطل فيه أثناء المعالجة، وإزالة استدعاء AssetProcessor.ember_version في discourse/lib/plugin/js_manager.rb at latest · discourse/discourse · GitHub واستبداله بالرقم 5 لمواصلة توليد الـ hex.
ثم قمت بتقليل التوازي إلى 1 لتبسيط الأمور في discourse/lib/plugin/js_manager.rb at latest · discourse/discourse · GitHub (parallel_count = [Etc.nprocessors, 1].min).
بعد ذلك، نفذت الأمر bundle exec rake assets:precompile:build، وكانت النتيجة كالتالي:
/var/www/discourse$ bundle exec rake assets:precompile:build
Plugin name is 'msgraph-polling', but plugin directory is named 'msgraph-poll-discourse-plugin'
[assemble_ember_build] Reusing existing core ember build. All done.
Plugin name is 'msgraph-polling', but plugin directory is named 'msgraph-poll-discourse-plugin'
[Plugin::JsManager] Compiling 49 plugins...
Compiling automation...
end of files.sort
end of files.sort
hex_digest 103dc9ebebb80a7065cb8dd41fb3356b30f151f7
########### recursive
# يتوقف هنا إلى الأبد، مستهلكًا الذاكرة بالكامل
أشتبه في أن المشكلة قد تكون مرتبطة بقيمة ulimit (التي قمنا بضبطها على unlimited بدلاً من قيمة مثل ulimit -n 1048576;)، نظرًا لأنك تفتح عددًا كبيرًا من الملفات وتخزن محتواها في الذاكرة (عبر الاستدعاءات العودية).
أخبرني إذا كان هذا يذكرك بشيء، أو إذا كانت لديك أي تلميح آخر حول ما قد تكون المشكلة.
تحياتي،
إسماعيل
js_manager.rb.txt (7.7 KB)