views:

83

answers:

2

I'd like to set my database to timeout requests that do not complete within a set amount of time, in order to prevent outlier requests from monopolizing the entire application.

Is there anything I can add to my Rails configuration files in order to set this?

I tried to add a line I saw often online of timeout: 5000 to my database.yml, but that didn't seem to have any effect.

I tried to make calls to ActiveRecord::Base.connection.execute('set statement_timeout to 5000') in the environment.rb but that causes Rails to error out.

I'm running a Postgres database on Heroku, where I do not have direct database access, hence I cannot do this with database configuration directly. Even if I remotely execute that command from the Heroku console, they can restart my application at any time, and if this isn't re-executed as the application starts, my change gets lost.

A: 

Try this syntax:

SET statement_timeout = 5000;
Matthew Wood
No, the problem isn't the SQL, the error I get when I stick the ActiveRecord::Base.connection.execute into my environment.rb is `uninitialized constant ActiveRecord`.
WIlliam Jones
A: 

Got this working, just needed to include the line in environment.rb at the very end, rather than in the beginning or in the block.

WIlliam Jones