Você está usando Rack::Timeout? Se uma exceção de tempo limite for gerada inesperadamente, existe a possibilidade de perder o estado. (https://github.com/heroku/rack- timeout/blob/master/doc/risks.md ).
O incremento do número da instrução preparada pode ser capturado em um loop, criando o erro de instrução duplicada e não pode ser recuperado sem reiniciar o processo. Sugira implementar https://github.com/ankane/slowpoke para matar/reiniciar o processo quando ocorrer um Timeout.
Leia mais sobre este assunto:
- https://github.com/ ankane/the-ultimate-guide-to-ruby-timeouts#rack-middleware
- https://github.com/heroku/rack-timeout/issues/ 76
- https://github.com/rails/rails/pull/17607
- https://github.com/rails/rails/issues/22408