Knowledge base

What makes a virtual machine risky

Running PowerMTA on a Virtual Server
Possible, but not recommended

Technically a node on a virtual machine works, but the manual does not recommend such an installation until the machine has sufficient hardware and the hypervisor is configured correctly: under load, sharing resources with neighbors can make the node unresponsive.

For VMware the manual gives settings: CPU and memory shares of 1000000, disk shares of 4000, and the “Unlimited” flag on all three; after that the machine is restarted.

The main trap is measuring the node on a quiet machine. Resource sharing with neighbors shows under load: the check when the node is added passes, and at campaign time the node becomes unresponsive.
What the Hub does. The Hub records machine resources as the system itself sees them — memory and disk size; how much of them the hypervisor actually gives under load is not visible from here.
Recommended values

VMware settings from the manual:

Resource Shares Limit
CPU 1000000 Unlimited
memory 1000000 Unlimited
disk 4000 Unlimited

These are starting values: the manual allows lowering them later while finding working ones.

The caveat about a non-recommended installation and the VMware values come from the manual (§ 2.5). The analysis of checking under load is ours.
Example configuration
# time the hypervisor took away from the machine
vmstat 5 5
The st column is time taken by the hypervisor; a persistently high value under load is exactly resource sharing with neighbors.
yellow — — directive names, blue — blocks. They are highlighted the same way in the text of the card.
Compatibility
PowerMTA 6.0
described in the manual of this version · platform: any
The vendor does not state the first version for every directive — there is no note here. The name also appears in the 5.0 edition of the manual.
How to check on the node
Check under load whether the node is responsive:
vmstat 5 5
time pmta show status
If the status command takes seconds to answer and st is high, the node lacks hypervisor resources, and the configuration has nothing to do with it.
In the Hub
Cost of a mistake
safe: a wrong value breaks nothing
Scenarios
Capacity planning · Prepare a node for sending · Untangle a stuck queue