-
-
Notifications
You must be signed in to change notification settings - Fork 817
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[REF] Permit lock mechanism having a 0 second timeout and use that in… #31274
base: master
Are you sure you want to change the base?
Conversation
… MailJobs to speed up the aquisition of Child jobs
🤖 Thank you for contributing to CiviCRM! ❤️ We will need to test and review this PR. 👷 Introduction for new contributors...
Quick links for reviewers...
|
This patch is particularly useful in the following situations:
|
We have been running this patch in production for some time now, at least 18 months, including during very heavy traffic times, with success, and with no known drawbacks. |
Just pinging @eileenmcnaughton in case you have thoughts/concerns. @andrew-cormick-dockery can you maybe explain a bit more how the sidecar docker containers are configured/used? 10k emails / minute is impressive througput. |
It's not fundamentally complicated; we have a bash script that loops continuously to execute this command: As load increases, the cluster creates more instances of CiviCRM, thus creating more mailing sidecars. So we end up with multiple invocations of And that's about the extent of the trick. In practice what we observe is that small mailings don't trigger the cluster thresholds for spawning more instances but larger mailings (> 100k recipients for example) do. So throughput increases in line with recipient count (which is perfectly fine for us). Other thoughts
|
Just flagging the test fails do seem to be related at least to my quick eye |
… MailJobs to speed up the aquisition of Child jobs
Overview
This allows the locking mechanism to only try for 0s rather than 3s to get a lock and specifies mailing job lock timeout to be 0 as well.
Before
0 second timeout not permitted by locking mechansim
After
0 second timeout permitted by locking mechanism
I believe AUG have been using this in their production for a while right ? @andrew-cormick-dockery @johntwyman
ping @JoeMurray @totten