From: Tom Lane <tgl@sss.pgh.pa.us>
To: Eric E <whalesuit@gmail.com>
Cc: pgsql-general@postgresql.org
Subject: Re: Preventing or controlling runaway queries
Date: Mon, 05 Dec 2005 15:57:27 -0500
Message-ID: <2416.1133816247@sss.pgh.pa.us> (raw)
In-Reply-To: <43949F37.4000000@gmail.com>
References: <43948EC3.4030407@gmail.com>
<1744.1133811345@sss.pgh.pa.us>
<43949F37.4000000@gmail.com>
Eric E <whalesuit@gmail.com> writes:
> Here's the test function:
> ...
> my $data_handle = spi_exec_query('SELECT * FROM
> schema1."table_of_approximately 30000 rows";');
Well, the plperl documentation does point out that spi_exec_query should
only be used when you know that the result set will be relatively
small. I think the alternative (spi_query/spi_fetchrow) is new in 8.1,
but you might be able to use a cursor with FETCH instead in older
versions.
> Dec 5 14:54:33 dbtestserver kernel: Out of Memory: Killed process 3294
> (postmaster).
This, however, is just plain administrator error. You should have the
OOM killer disabled completely (memory overcommit off) on any server
machine, or indeed any machine at all that runs processes you would not
like to see killed at random. I believe PG could recover from this,
if the kernel gave it a polite "out of memory" error and not a kill -9.
But the truly nasty part of the OOM killer is that it may kill a totally
innocent process.
Linux's memory-overcommit behavior was invented by someone accustomed to
Windows standards of reliability. Personally I don't think there is any
good reason to have it enabled ever.
regards, tom lane
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: tgl@sss.pgh.pa.us, whalesuit@gmail.com, pgsql-general@postgresql.org
Subject: Re: Preventing or controlling runaway queries
In-Reply-To: <2416.1133816247@sss.pgh.pa.us>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox