Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 30554650148 for ; Thu, 28 Aug 2008 03:00:59 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 17877-06 for ; Thu, 28 Aug 2008 03:00:50 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from relay-2.mail.nethere.net (relay-2.mail.nethere.net [66.63.128.162]) by postgresql.org (Postfix) with ESMTP id 0CBF765018A for ; Thu, 28 Aug 2008 02:59:08 -0300 (ADT) Received: from scan-2.mail.nethere.net (scan-2.mail.nethere.net [66.63.128.133]) by relay-2.mail.nethere.net (Postfix) with ESMTP id 7609A12B7C4 for ; Wed, 27 Aug 2008 22:58:59 -0700 (PDT) Received: from mta-1.mail.nethere.net by scan-2.mail.nethere.net with LMTP id FSc0uDWm-MuE; Wed, 27 Aug 2008 22:58:59 -0700 (PDT) Received: from lisa-james-computer.local (wsip-68-224-174-233.sd.sd.cox.net [68.224.174.233]) by mta-1.mail.nethere.net (Postfix) with ESMTP id 4C618F1814 for ; Wed, 27 Aug 2008 22:58:59 -0700 (PDT) Message-ID: <48B63E9B.4030603@emolecules.com> Date: Wed, 27 Aug 2008 22:58:51 -0700 From: Craig James User-Agent: Thunderbird 2.0.0.16 (Macintosh/20080707) MIME-Version: 1.0 To: pgsql-performance@postgresql.org Subject: Re: select on 22 GB table causes "An I/O error occured while sending to the backend." exception References: <82bpze3ou8.fsf@mid.bfk.de> <20080827221338.GP18946@commandprompt.com> <659.1219899383@sss.pgh.pa.us> In-Reply-To: <659.1219899383@sss.pgh.pa.us> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200808/363 X-Sequence-Number: 31244 The OOM killer is a terrible idea for any serious database server. I wrote a detailed technical paper on this almost 15 years ago when Silicon Graphics had this same feature, and Oracle and other critical server processes couldn't be made reliable. The problem with "overallocating memory" as Linux does by default is that EVERY application, no matter how well designed and written, becomes unreliable: It can be killed because of some OTHER process. You can be as clever as you like, and do all the QA possible, and demonstrate that there isn't a single bug in Postgres, and it will STILL be unreliable if you run it on a Linux system that allows overcommitted memory. IMHO, all Postgres servers should run with memory-overcommit disabled. On Linux, that means /proc/sys/vm/overcommit_memory=2. Craig