pconnect vs connect
| From: | Sheer El-Showk | Date: | Wed, 18 Oct 2000 20:24:41 +0000 |
| Subject: | pconnect vs connect | ||
| Groups: | php.db | ||
| Request: | Send a blank email to php-db+get-3749@lists.php.net to get a copy of this message | ||
Hi,
I'm one of the developers working on the phpauction project
(www.phpauction.org). Recently, I tried converting the code to use
mysql_pconnect rather than mysql_connect. Since a database connection
is invoked on every web page, I thought my change would greatly enhance
performance, but my results were a little suprising (I tested using both
connect and pconnect twice, once to "warm up" apache and mysql, and a
second time with the warmed up system -- I didn't try tweaking
any paramters). The test results are included below, but its enough to
say that pconnect actually decreased performance slightly.
My guess is that the open connections (I used mysql processlist to verify
that connections WHERE being reused) did not yield any performance
enhancements, and the extra time pconnect spends checking for used
connections is reflected in the slight performance loss.
My question: why? Is MySQL that fast at opening a connection.
Alternately, is php that slow (on the same machine I got 25 pages
per minute using Apache Jserv, albeit on an entireley different script
-- though they both opened several database connecetions). I'm a relative
newcomer to php, but I thought that it was native to the apache process,
the same way mod_perl is, so it would be REALLY fast. Is this not the
case? Where (online and for free ;->) can I find information regarding
the php backend architecture that would elucidate these issues (please
don't just say www.php.net).
Thanks in advance,
Sheer El-Showk
Benchmarks:
Please forgive the full benchmark listing, I just thought I'd be thorough.
Warm up tests:
--------------
mysql_connect:
/usr/local/apache/bin/ab -n 1000 -c 10
http://192.168.1.2/~sheer/phpauction/index.php3
Server Software: Apache/1.3.12
Server Hostname: 192.168.1.2
Server Port: 80
Document Path: /~sheer/phpauction/index.php3
Document Length: 15286 bytes
Concurrency Level: 10
Time taken for tests: 141.273 seconds
Complete requests: 1000
Failed requests: 154
(Connect: 0, Length: 154, Exceptions: 0)
Total transferred: 15606422 bytes
HTML transferred: 15308942 bytes
Requests per second: 7.08
Transfer rate: 110.47 kb/s received
Connnection Times (ms)
min avg max
Connect: 0 0 54
Processing: 106 1401 3237
Total: 106 1401 3291
mysql_pconnect:
Server Software: Apache/1.3.12
Server Hostname: 192.168.1.2
Server Port: 80
Document Path: /~sheer/phpauction/index.php3
Document Length: 15286 bytes
Concurrency Level: 10
Time taken for tests: 153.657 seconds
Complete requests: 1000
Failed requests: 190
(Connect: 0, Length: 190, Exceptions: 0)
Total transferred: 15590002 bytes
HTML transferred: 15293410 bytes
Requests per second: 6.51
Transfer rate: 101.46 kb/s received
Connnection Times (ms)
min avg max
Connect: 0 0 54
Processing: 277 1529 3700
Total: 277 1529 3754
real test:
mysql_connect:
/usr/local/apache/bin/ab -n 1000 -c 10
http://192.168.1.2/~sheer/phpauction/index.php3
Server Software: Apache/1.3.12
Server Hostname: 192.168.1.2
Server Port: 80
Document Path: /~sheer/phpauction/index.php3
Document Length: 15286 bytes
Concurrency Level: 10
Time taken for tests: 126.953 seconds
Complete requests: 1000
Failed requests: 205
(Connect: 0, Length: 205, Exceptions: 0)
Total transferred: 15581755 bytes
HTML transferred: 15285755 bytes
Requests per second: 7.88
Transfer rate: 122.74 kb/s received
Connnection Times (ms)
min avg max
Connect: 0 0 36
Processing: 329 1263 2614
Total: 329 1263 2650
mysql_pconnect:
/usr/local/apache/bin/ab -n 1000 -c 10
http://192.168.1.2/~sheer/phpauction/index.php3
Server Software: Apache/1.3.12
Server Hostname: 192.168.1.2
Server Port: 80
Document Path: /~sheer/phpauction/index.php3
Document Length: 15285 bytes
Concurrency Level: 10
Time taken for tests: 140.592 seconds
Complete requests: 1000
Failed requests: 214
(Connect: 0, Length: 214, Exceptions: 0)
Total transferred: 15584882 bytes
HTML transferred: 15288586 bytes
Requests per second: 7.11
Transfer rate: 110.85 kb/s received
Connnection Times (ms)
min avg max
Connect: 0 0 35
Processing: 339 1398 2905
Total: 339 1398 2940