RE: Re: Understanding persistent connections with oci8

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

 



Hello Richard,

  First let me introduce myself, I'm Jay Bauer and have been supporting
the Apache webserver for the last couple of years and have been doing
networking support for over 15 years.  I want to thank you for
explaining why the folks replying to our lab's enquiries don't think the
tests are valid.  I can appreciate the need of doing fault isolation of
a problem so that all possible extraneous causes are eliminated.   

  However, I don't think their specific concerns are valid, as these
systems are on internal networks, and very few people access them at
all, and only Kiran or I would be accessing the oracle database and that
is for our tests.  And yes we will get some 50 httpd servers up and
running, but once we stop our testing there is little access to the
system or none to these connections, and they will stay around for hours
or days till one of us decides to do more testing and stops and restarts
the Apache server. 

  Now having said all of that, I had no problem implementing the test
setup you suggested.  If that is what it takes to get everyone on the
same page, I'm happy to oblige.

 The HP-UX Apache web server only provides the worker MPM so in order to
set up Apache as requested we use the following configuration in
httpd.conf:

 changed the worker.c configuration to:

<IfModule worker.c>
StartServers         1
MaxClients           1
MinSpareThreads      1
MaxSpareThreads      1
ThreadsPerChild      1
MaxRequestsPerChild  1
</IfModule>

and commented out mod_cgid:
#LoadModule cgid_module modules/mod_cgid.so 

and in php.ini:

extension=oci8.sl
oci8.max_persistent=1
oci8.persistent_timeout=10
oci8.ping_interval=0

After starting Apache we have two process running:

ps -ef |grep apache     
     www 29362 29361  0 23:39:52 ?         0:00
/opt/hpws/apache/bin/httpd -d /opt/hpws/apache -k start   
    root 29361     1  0 23:39:52 ?         0:00
/opt/hpws/apache/bin/httpd -d /opt/hpws/apache -k start

Pid 29361, the master httpd server, and one worker httpd server pid
29362, which is the minimum configuration possible with worker MPM.

 I then ran the apache bench mark for just one connection:

bin/ab -n 1 http://maggie.india.hp.com/oracle_mufasa.php
....
Document Path:          /oracle_mufasa.php
Document Length:        334 bytes

Concurrency Level:      1
Time taken for tests:   0.370606 seconds
Complete requests:      1
 
And then checked on the connection
 
As quick as possible:
>netstat -an |grep 1521
tcp        0      0  15.42.227.146.59262    15.106.72.129.1521
ESTABLISHED

30 sends later:
>netstat -an |grep 1521
tcp        0      0  15.42.227.146.59262    15.106.72.129.1521
ESTABLISHED

2 minutes later:
>netstat -an |grep 1521
tcp        0      0  15.42.227.146.59262    15.106.72.129.1521
ESTABLISHED

5 minutes later:
>netstat -an |grep 1521
tcp        0      0  15.42.227.146.59262    15.106.72.129.1521
ESTABLISHED

It wasn't until about 40 minutes later that this connection did finally
terminate. 

And when I checked the error_log, it was clear what terminated it:

[error] [client 15.10.45.59] Symbolic link not allowed:
/opt/hpws/apache/htdocs/index.html
[debug] worker.c(1342): taking over scoreboard slot from 29362
(quiescing)

 Another request finally came in to this system , which errored, and
since there was only one server allowed to run it did and that is what
killed this persistent connection.   This is what we have also observed
that other apache requests will cause this persistent connections to be
terminated, they don't close on their own.   And as said earlier this
system's webserver doesn't get many hits, it is a test environment, not
a production system.  And as we can see it took 40 minutes for any
traffic to hit this system.  

  I hope this test is adequate to clear up the concerns that the testing
is invalid.   

Best regards, Jay Bauer 
WTEC Engineer, Internet Services HP-UX
Hewlett Packard Co.  



-----Original Message-----
From: Richard Lynch [mailto:ceo@xxxxxxxxx] 
Sent: Thursday, October 05, 2006 4:48 PM
To: Mendonce, Kiran (STSD)
Cc: php-general@xxxxxxxxxxxxx
Subject: RE:  Re: Understanding persistent connections with oci8

On Wed, October 4, 2006 12:34 pm, Mendonce, Kiran (STSD) wrote:
> I understand the performance boost one can get by reusing existing 
> connections. And I did see for myself that with the default settings,
> oci_pconnect() does reuse all the connections.
>
> But what should happen if there are idle connections and the timeout 
> is reached ? That is my question. What is the purpose of the 
> persistent_timeout setting ? Does it give the user a means of 
> specifying a timeout after which idle connections are removed ?

Yes.

Their claim is that your tests are invalid because your have MULTIPLE
Apache processing swapping the connections around, so they are NOT idle
for 10 seconds.

To prove them wrong, you would need to:
Set up a dev server on a private network with Apache having ONE, and
ONLY ONE, child.
Set the timeout to 10 seconds.
Surf to a test page.
Wait 10 seconds.
See if the connection goes away.

If anybody else on the planet (or off-planet, for that matter, assuming
our astronauts have time to surf to your site) can surf to the site and
keep the connection "alive" by having Apache re-use it, then it's going
to stay alive.

--
Some people have a "gift" link here.
Know what I want?
I want you to buy a CD from some starving artist.
http://cdbaby.com/browse/from/lynch
Yeah, I get a buck. So?

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux