On 03/20/2012 03:14 AM, Bèrto ëd Sèra wrote:

I currently have an emergency ... As an emergency procedure we have set a script that each minute has a look at the situation and runs pg_cancel_backend() against anything that has been waiting for more than X secs. Then it sleeps one more minute...
...
Is there anyway I can mark the process running the filter, maybe using the update_process_title feature? I'd like to have something I can see from a ps command, grep for it and kill -15 it, without wasting our scarce resources on one more pg process to use info from pg_stat_activity.

Several things spring to mind.

1. The script that starts the filter can note its pid and set an at-job to kill it after 30 minutes. I've used this technique with success.

2. Create a new role specifically to run the filter. The role is generally visible in ps.

But this all begs the question. Why not:

3. Set the statement_timeout so long-running statements will be automatically killed. This can be done on a per-role basis so simply set it as desired for the role used by the problematic Java program. It is a default and can be changed by the user so if there are individual statements that need a longer timeout you can change just for those statements.

Cheers,
Steve


--
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql

Reply via email to