Parece uma condição de corrida ou dead lock .
Ou seja, o SW1 e o SW2 devem ter um protocolo de comunicação com solicitações e confirmações. Se este protocolo não for bem projetado, pode haver uma condição de corrida, na qual os pacotes não são enviados na ordem correta. O SW1 é empilhado esperando por um pacote do SW2, mas que o SW2 já enviou no passado (e o SW1 errou) e o SW2 não irá enviá-lo novamente, tornando-se um estado de bloqueio no SW1.
Se este for o caso, a falha depende da velocidade de execução de SW1 e SW2 e, mais ainda, da carga dos servidores. Vamos dizer, se ambos os processos estão sendo executados lentamente, é mais difícil que o SW1 perca o pacote do SW2, que cria o estado de bloqueio. A execução do monitor do sistema reduz a velocidade do sistema, o que pode ser suficiente para que isso funcione.
Quanto aos servidores diferentes, se o primeiro servidor tiver mais carga do que os outros, então, você tem, funciona.