Wir haben viele dieser Fehler im Log. Gibt es etwas, das wir tun können/sollten?
Info:
Job-Ausnahme: Fehler beim Auffüllen des ‘Reader’-Abzeichens: {:revoked_callback=>#<Proc:0x00007867ef8d9620 /var/www/discourse/app/jobs/regular/backfill_badge.rb:20 (lambda)>, :granted_callback=>#<Proc:0x00007867ef8d95f8 /var/www/discourse/app/jobs/regular/backfill_badge.rb:21 (lambda)>}. Grund: FEHLER: Anweisung wird wegen Anweisungszeitüberschreitung abgebrochen
Trace:
/var/www/discourse/app/services/badge_granter.rb:505:in `rescue in backfill'
/var/www/discourse/app/services/badge_granter.rb:385:in `backfill'
/var/www/discourse/app/jobs/regular/backfill_badge.rb:18:in `execute'
/var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform'
rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:303:in `block in perform'
/var/www/discourse/app/jobs/base.rb:299:in `each'
/var/www/discourse/app/jobs/base.rb:299:in `perform'
sidekiq-7.3.9/lib/sidekiq/processor.rb:220:in `execute_job'
sidekiq-7.3.9/lib/sidekiq/processor.rb:185:in `block (4 levels) in process'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:180:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/www/discourse/lib/sidekiq/discourse_event.rb:6:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/www/discourse/lib/sidekiq/pausable.rb:131:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
sidekiq-7.3.9/lib/sidekiq/job/interrupt_handler.rb:9:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:26:in `track'
sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:134:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:173:in `invoke'
sidekiq-7.3.9/lib/sidekiq/processor.rb:184:in `block (3 levels) in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:145:in `block (6 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_retry.rb:118:in `local'
sidekiq-7.3.9/lib/sidekiq/processor.rb:144:in `block (5 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/config.rb:39:in `block in <class:Config>'
sidekiq-7.3.9/lib/sidekiq/processor.rb:139:in `block (4 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/processor.rb:281:in `stats'
sidekiq-7.3.9/lib/sidekiq/processor.rb:134:in `block (3 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_logger.rb:15:in `call'
sidekiq-7.3.9/lib/sidekiq/processor.rb:133:in `block (2 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_retry.rb:85:in `global'
sidekiq-7.3.9/lib/sidekiq/processor.rb:132:in `block in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_logger.rb:40:in `prepare'
sidekiq-7.3.9/lib/sidekiq/processor.rb:131:in `dispatch'
sidekiq-7.3.9/lib/sidekiq/processor.rb:183:in `block (2 levels) in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `handle_interrupt'
sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `block in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `handle_interrupt'
sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:86:in `process_one'
sidekiq-7.3.9/lib/sidekiq/processor.rb:76:in `run'
sidekiq-7.3.9/lib/sidekiq/component.rb:10:in `watchdog'
sidekiq-7.3.9/lib/sidekiq/component.rb:19:in `block in safe_thread'
Könnte dies ein Problem mit einem besonders großen Thema sein? Haben Sie Megathemen, die es belasten könnten?
Wenn der Job zur Vergabe von Abzeichen dadurch vollständig blockiert wird, könnte es eine Idee sein, das Leser-Abzeichen vorübergehend zu deaktivieren und zu sehen, ob das hilft.
Ich habe Folgendes zu einem scheinbar ähnlichen Problem gefunden: (obwohl ziemlich alt)
Es könnte also sein, dass die Abfrage zu viel für Ihre Spezifikationen ist?
Wir haben kein Megathema. Zumindest ist mir keins bekannt. Wenn es einen SQL-Befehl gibt, den ich ausführen und überprüfen kann, wäre das großartig.
Wir haben einen 32-Kern-CPU + 128 GB RAM.. Ich bin mir nicht sicher, ob das eine Einschränkung ist. Falls ich etwas in der Datenbank ändern muss, lassen Sie es mich bitte wissen.
Ich denke, wenn Sie eines hätten, würden Sie es wahrscheinlich wissen, aber Sie können Ihre /latest-Liste umordnen, um sie anhand des Spaltentitels oder mit YourSite/latest?order=posts zu überprüfen.
Aber etwas wie dieses im Daten-Explorer sollte Ihnen auch die Top 10 anzeigen:
SELECT id AS topic_id
FROM topics
ORDER BY posts_count DESC
LIMIT 10
Die SQL für das Reader-Abzeichen finden Sie hier:
Das Reader-Abzeichen ist nicht unbedingt eines der aufregendsten. Wenn Sie also damit leben können, es zu deaktivieren, und das alles behebt, könnte das der einfache Ausweg sein. Aber wenn Sie es weiter untersuchen möchten, sollten Sie sich wahrscheinlich Ihre post_timings-Tabelle ansehen, um zu sehen, wie groß sie geworden ist.
Das scheint in der Tat ein ordentliches Ding zu sein.
Nur für den Fall, dass Sie dies zu diesem Zeitpunkt nicht getan haben (abhängig davon, wie alt Ihr Forum ist), gab es diesen Rat in PostgreSQL 13 update
Leider habe ich keine direkte Erfahrung damit, daher müssen wir möglicherweise warten, bis jemand Schlaues auftaucht, um tiefer einzutauchen.
Ja. Ich habe das gemacht, als ich auf PostgreSQL 13 aktualisiert habe. Ich habe es auch gestern ausgeführt. Aber die Datenbankgröße hat sich nicht verändert.
Hoffentlich kann jemand anders sagen, wie man die Größe reduzieren kann.