Se você passar -sf
para HAProxy (provavelmente o que o script de inicialização faz), então o haproxy antigo manipulará as conexões até que elas não sejam mais usadas. Portanto, enquanto houver uma conexão aberta, o haproxy terá duas instâncias até que todas estejam concluídas.
Se o aplicativo usar o pool de conexões (mantendo as conexões abertas para reutilização), poderá demorar um pouco até que essas conexões sejam fechadas. Se você estiver usando o pool de conexão, talvez deseje procurar algum tipo de parâmetro MaxAge que faça com que as conexões sejam fechadas depois de terem sido abertas por um determinado período de tempo (com algo assim, a idade é verificada após a transação ser completo, em outras palavras, antes que a conexão seja retornada ao pool).