Fixed now! Our audit.log file had grown too large (2GB+) for the JVM to handle. This caused the JVM to throw “java.io.IOException: File too large” exceptions. However, the WM code retries writing the audit log once a second in an endless loop (!) - this dragged the server down.
Renaming the server’s audit.log and restarting the server fixed the problem.
Word to the wise - steer clear of the “0042 XML Parser” and “0043 XML Parse Stream” options to keep the audit log manageable.