O balanceamento de carga é totalmente robusto ou está fazendo aderência com base em IP ou cookie? Você poderia ter algum tipo de tráfego de usuário que adere a um servidor e se move após a reinicialização - especialmente se outro dos seus servidores estiver chamando um aplicativo no cluster. Então cruze-o contra ocorrências reais no servidor.
Você também pode ter uma condição de corrida no aplicativo que determinadas operações obtenham em um loop. Para isso, você poderia pegar um thread dump (kill -3 pid) e retirá-lo do seu log stdout e executar algo como Samurai nele para ver o que acontece.
Também gostaria de ativar o registro da coleta de lixo e ver se os horários de GC estão correlacionados com os tempos de atraso percebidos.