Hallo @david,
Nimmt der Speicherverbrauch sofort ab, sobald die Aufgabe assets:build abgeschlossen ist?
Nein. Ich habe weiter recherchiert und es gibt etwas Seltsames.
Vor dem Ausführen von precompiling:build sieht die Liste der Plugins so aus:
/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
Beim Debuggen des Codes habe ich folgendes Verhalten festgestellt:
/var/www/discourse$ script/rails runner "AssetProcessor.ember_version"
Plugin name is 'msgraph-polling', but plugin directory is named 'msgraph-poll-discourse-plugin'
# hangs here forever
Die Zeile AssetProcessor.ember_version entspricht discourse/lib/plugin/js_manager.rb at latest · discourse/discourse · GitHub.
Daher habe ich einige Änderungen an dieser Datei vorgenommen (siehe Anhang), hauptsächlich um auszugeben, wo der Prozess beim Verarbeiten hängen bleibt, und um AssetProcessor.ember_version in discourse/lib/plugin/js_manager.rb at latest · discourse/discourse · GitHub zu entfernen, indem ich einfach 5 einsetze, um die Hex-Generierung fortzusetzen.
Anschließend habe ich die Parallelität auf 1 reduziert, um die Dinge zu vereinfachen, in discourse/lib/plugin/js_manager.rb at latest · discourse/discourse · GitHub (parallel_count = [Etc.nprocessors, 1].min).
Danach habe ich bundle exec rake assets:precompile:build ausgeführt, was folgendes Ergebnis lieferte:
/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
# hang here forever, consuming the full memory
Ich vermute, dass dies mit dem Wert von ulimit zusammenhängen könnte (der bei uns auf unlimited statt auf etwas wie ulimit -n 1048576; gesetzt ist), da eine sehr große Anzahl von Dateien geöffnet und deren Inhalt im Speicher gespeichert wird (durch rekursive Aufrufe).
Lass mich wissen, ob dir das etwas sagt oder ob du weitere Hinweise hast, woran das Problem liegen könnte.
Viele Grüße,
Ismael
js_manager.rb.txt (7,7 KB)