Global
The default depends on the platform: true on x86 and false on ARM. This is the only directive whose default is declared differently for different architectures.
Normally the engine, having finished with a thread, keeps it for reuse. With the value false threads are discarded immediately.
Why this might be needed, the manual says plainly: it works around external inconveniences — for example, slowness of the top command on Linux, which is hampered by a large number of threads.
And right there — two prices for it. The first: loss of performance. The second is subtler: reuse works around a bug in old versions of glibc (before 2.2.2) that drastically reduces available virtual memory and can bring the node down if the queue grows a lot.
For ARM the manual gives a separate recommendation: do not change the default — enabling it there increases resource usage and can lead to unstable operation.
The trade is clearly unprofitable, and it is not easy to see this from the description: “interferes with top” sounds like a real problem, while “a workaround for a glibc bug before 2.2.2” sounds like ancient history.
The second half: on ARM the manual asks not to touch the default at all, and there it is different. A setting copied from an x86 node to ARM lands exactly in the forbidden zone.
The line is worth remembering when moving a configuration between nodes of different architectures: in the manual this is the only directive whose default depends on the platform rather than on the engine version.
What to set. The answer is short:
| Value | When |
|---|---|
| do not write it | always: the platform default is right for it |
| false on x86 | only if a large number of threads interferes with monitoring, and you accept both prices |
| true on ARM | the manual directly advises against it |
If monitoring is hampered, it is better to change the monitoring tool, not how the node works.
# it is worth changing only with an understanding of both prices thread-reuse false
what people get wrong and how it ends2 mistakes▶
§ 3.3.1.38
§ 3.3.1.38
1 relation
grep -n 'thread-reuse\|thread-min-priority\|thread-max-priority' /etc/pmta/config uname -m
3 articles
◇The activation key is a prerequisite for installation, not a step after itWithout an activation key from SparkPost support the engine neither installs nor runs, and the license tier sets the outbound connection ceiling: on Standard everything above 200 is ignored.◇Cloud restrictionsClouds restrict outbound mail on port 25 until you ask them to lift the limit, and mailbox providers treat their address ranges with suspicion.◇How to turn a sending plan into hardwareTwo constants for sizing any node: about 2 KB of memory per queued recipient and spool space proportional to the total size of the messages.