Re: Kill a session

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> > I beleive the function to kill a backend is actually in the 
> codebase, 
> > it's just commented out because it's considered dangerous. 
> There are 
> > some possible issues (see -hackers archives) about sending SIGTERM 
> > without actually shutting down the whole cluster.
> > 
> > Doing the client-side function to call is the easy part.
> > 
> > In many cases you just need to cancel a query, in which 
> case you can 
> > use
> > pg_cancel_backend() for exmaple. If you need to actually 
> kill it, your 
> > only supported way is to restart postgresql.
> 
> In other words, are you confirming that there is no way to 
> kill a query from another process, other than shutting down 
> the database?  My understanding of the documentation tells me 
> I can't use cancel, because the process doing the killing 
> isn't the original process.

You can't kill another backend, no.
You can *cancel* a query on it and return it to idle state. See
http://www.postgresql.org/docs/8.1/interactive/functions-admin.html,
pg_cancel_backend().


> So "kill -15 <pid>" is NOT killing the process -- to kill the 
> process, I have to use signal 9.  But if I do that, ALL 
> queries in progress are aborted.  I might as well shut down 
> and restart the database, which is an unacceptable solution 
> for a web site.
> 
> I'm back to my original question: How do you kill a runaway 
> query without bringing down the whole database?  Is there 
> really no answer to this?

Runaway queries can be killed with pg_cancel_backend(), or from the
commandline using kill -INT <pid>. The backend will still be around, but
it will have cancelled the query.

//Magnus


[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux