Following the root cause analysis which Tobias started all those weeks ago we 
(the admin team behind the installation) are still struggling with the 
following phenomenon: messages on average take more than 24 hours to be 
processed, more precisely, the average lifetime of a pickled message object in 
`/var/lib/mailman3/queue/pipeline` clocks in at around 26 hours).

Couple of stats of the installation: standard installation from Bookworm OS 
repos, Hyperkitty as archiver and Postorius as web frontend as explained above, 
running Python 3.11.2 from the standard systemd service as packaged with the 
Bookworm deb file. All backends (Core + Hyperkitty) are supported by Postgres 
version 15+248. The MTA is a standard Postfix installation, again from OS 
packages.

The underlying VM has 7 cores with just under 24 GB of main memory. This 
production instance is handling less than 130 mailing list (MLs) with an 
average of less than 10 postings per day per ML. CPU core utilisation hovers 
around 50% with the lion share allocated to the four pipeline runners as part 
of the MM configuration. 

OS resource utilisation is well below bounds (approx. 8 GB of main memory 
allocated to running processes), plenty of available sockets space (I noticed 
some transient `Connection lost during _handle_client()` warnings in the logs 
so I checked that the SMTP runner can connect to Postfix for delivering the 
messages after processing by checked the socket allocation of the running 
processes). 

Cursory review of the corresponding Core classes (runner + pipeline 
implementation in addition to `posting_pipeline`) didn't reveal any further 
pointers. What I did notice though that increasing the logging levels of the 
components (namely `smtp`, `pipeline` and `lmtp` to `debug`) in 
`/etc/mailman3/mailman.cfg` didn't add any useful information to the logs as 
configured after restarting the Core. 

As outlined above, Hyperkitty doesn't seem to do a check based on ML and 
message ID before archiving a message in the database. But this only add a REST 
roundtrip and Postgres communication through Hyperkitty's underlying Django 
framework to the overall system load and the driving UWSGI instance is well 
within CPU cycle bounds. 

Any pointers are appreciated - more than happy to provide more info if required.
_______________________________________________
Mailman-users mailing list -- mailman-users@mailman3.org
To unsubscribe send an email to mailman-users-le...@mailman3.org
https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
Archived at: 
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message/OTY7D5VAGWAIMWERK75RLPVJE7XW75C5/

This message sent to arch...@mail-archive.com

Reply via email to