Some performance issues (since everybody is testing ... :) - Mailing list pgsql-hackers

From Costin Oproiu
Subject Some performance issues (since everybody is testing ... :)
Date
Msg-id Pine.LNX.3.96.980206114859.9545A-300000@linux.tpd.deuroconsult.ro
Whole thread Raw
List pgsql-hackers
Hi there,

I am starting with the conclusions to spare time:
 - persistent connections invention stands somewhere between the fire and the
   wheel
 - unix sockets is not much compared to tcpip (at least on my Linux 2.0.30
   box).
 - parsing and executing a trivial "select 17;" accounts for a lot of time,
   someone wanted hints on what is critical, profiler statistics coroborated.


 Stressing postmaster with 100 connections
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Connection type                       Time (seconds)
 ----------------------------------------------------
 tcpip local                                15
 tcpip local with select                    26
 unix sockets                               15
 unix sockets with select                   26
 tcpip local persistent                      0
 tcpip local persistent with select          2
 unix sockets persistent                     0
 unix sockets persistent with select         2


 Stressing postmaster with 2000 persistent connections
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Connection type                        Time (seconds)
 -----------------------------------------------------
 tcpip local                                 3
 tcpip local with select                    45
 unix sockets                                3
 unix sockets with select                   45



NOTES:
 - tests were (repeatedly!) run via php3 as apache module
 - scrips attached, comments wellcome
 - "with select" below means a pg_Exec("select 17;")
   inserted between Connect and Close


.co.

Costin Oproiu ---------------- http://www2.deuroconsult.ro/~co
Ciprian Porumbescu 10, ap.13       tel/fax:    +(40)-68-183528
Brasov 2200, ROMANIA                 email: co@deuroconsult.ro
--------------------------------------------------------------
<html>
<head><title>Connect benchmark</title></head>
<body>

<?php
error_reporting(1);
$db = "ibase";

if(!IsSet($max)):
  $max  = 1000;
endif;

echo "<table border=1>";
echo "<tr><th colspan=2>Stressing postmaster with $max persistent connections</th></tr>";
echo "<tr><th align=left>Connection type</th><th align=right>Time (seconds)</th></tr>";
 
/*
 *    tcpip persistent connections
 */
$host = "localhost";
$port = "5432";

$tt = time();
for($i=0; $i<$max; $i++) {
  $conn = pg_pConnect($host, $port, "", "", $db);
  pg_Close($conn);
 }
$tt = time() - $tt;
echo "<tr><td>tcpip local</td><td align=right>$tt</td></tr>";

/*
 *    tcpip persistent connections with selects
 */
$host = "localhost";
$port = "5432";

$tt = time();
for($i=0; $i<$max; $i++) {
  $conn = pg_pConnect($host, $port, "", "", $db);
  $res  = pg_Exec($conn, "select 17");
  pg_Close($conn);
 }
$tt = time() - $tt;
echo "<tr><td>tcpip local with select</td><td align=right>$tt</td></tr>";

/*
 *    unix persistent sockets connections
 */
$host = "";
$port = "";

$tt = time();
for($i=0; $i<$max; $i++) {
  $conn = pg_pConnect($host, $port, "", "", $db);
  pg_Close($conn);
 }
$tt = time() - $tt;
echo "<tr><td>unix sockets</td><td align=right>$tt</td></tr>";

/*
 *    unix sockets persistent connections with selects
 */
$host = "";
$port = "";

$tt = time();
for($i=0; $i<$max; $i++) {
  $conn = pg_pConnect($host, $port, "", "", $db);
  $res  = pg_Exec($conn, "select 17");
  pg_Close($conn);
 }
$tt = time() - $tt;
echo "<tr><td>unix sockets with select</td><td align=right>$tt</td></tr>";
echo "</table>";
?>
</body>
</html><html>
<head><title>Connect benchmark</title></head>
<body>

<?php
error_reporting(1);
$db = "ibase";

if(!IsSet($max)):
  $max  = 100;
endif;

echo "<table border=1>";
echo "<tr><th colspan=2>Stressing postmaster with $max connections</th></tr>";
echo "<tr><th align=left>Connection type</th><th align=right>Time (seconds)</th></tr>";
 
/*
 *    tcpip connections
 */
$host = "localhost";
$port = "5432";

$tt = time();
for($i=0; $i<$max; $i++) {
  $conn = pg_Connect($host, $port, "", "", $db);
  pg_Close($conn);
 }
$tt = time() - $tt;
echo "<tr><td>tcpip local</td><td align=right>$tt</td></tr>";

/*
 *    tcpip connections with selects
 */
$host = "localhost";
$port = "5432";

$tt = time();
for($i=0; $i<$max; $i++) {
  $conn = pg_Connect($host, $port, "", "", $db);
  $res  = pg_Exec($conn, "select 17");
  pg_Close($conn);
 }
$tt = time() - $tt;
echo "<tr><td>tcpip local with select</td><td align=right>$tt</td></tr>";

/*
 *    unix sockets connections
 */
$host = "";
$port = "";

$tt = time();
for($i=0; $i<$max; $i++) {
  $conn = pg_Connect($host, $port, "", "", $db);
  pg_Close($conn);
 }
$tt = time() - $tt;
echo "<tr><td>unix sockets</td><td align=right>$tt</td></tr>";

/*
 *    unix sockets connections with selects
 */
$host = "";
$port = "";

$tt = time();
for($i=0; $i<$max; $i++) {
  $conn = pg_Connect($host, $port, "", "", $db);
  $res  = pg_Exec($conn, "select 17");
  pg_Close($conn);
 }
$tt = time() - $tt;
echo "<tr><td>unix sockets with select</td><td align=right>$tt</td></tr>";

/*
 *    tcpip persistent connections
 */
$host = "localhost";
$port = "5432";

$tt = time();
for($i=0; $i<$max; $i++) {
  $conn = pg_pConnect($host, $port, "", "", $db);
  pg_Close($conn);
 }
$tt = time() - $tt;
echo "<tr><td>tcpip local persistent</td><td align=right>$tt</td></tr>";

/*
 *    tcpip persistent connections with selects
 */
$host = "localhost";
$port = "5432";

$tt = time();
for($i=0; $i<$max; $i++) {
  $conn = pg_pConnect($host, $port, "", "", $db);
  $res  = pg_Exec($conn, "select 17");
  pg_Close($conn);
 }
$tt = time() - $tt;
echo "<tr><td>tcpip local persistent with select</td><td align=right>$tt</td></tr>";

/*
 *    unix persistent sockets connections
 */
$host = "";
$port = "";

$tt = time();
for($i=0; $i<$max; $i++) {
  $conn = pg_pConnect($host, $port, "", "", $db);
  pg_Close($conn);
 }
$tt = time() - $tt;
echo "<tr><td>unix sockets persistent </td><td align=right>$tt</td></tr>";

/*
 *    unix sockets persistent connections with selects
 */
$host = "";
$port = "";

$tt = time();
for($i=0; $i<$max; $i++) {
  $conn = pg_pConnect($host, $port, "", "", $db);
  $res  = pg_Exec($conn, "select 17");
  pg_Close($conn);
 }
$tt = time() - $tt;
echo "<tr><td>unix sockets persistent with select</td><td align=right>$tt</td></tr>";

echo "</table>";
?>
</body>
</html>

pgsql-hackers by date:

Previous
From: sferac@bo.nettuno.it
Date:
Subject: connection error
Next
From: Mattias Kregert
Date:
Subject: Re: [HACKERS] Profile of current backend