[pgpool-general: 649] Re: Pgpool PHP PDO connection not closing after script execution

Aleksej Trofimov aleksej.trofimov at ruptela.lt
Wed Jun 20 15:01:27 JST 2012


>> Hello,
>>      Several days ago I faced with a pgpool (3.1.3) + php
>>      pdo(5.3.9-1.ius.el5) problem. My project has a lot of connection per
>>      second (about 40 in a second), so we are using pgpool in load balancer
>>      and master/slave mode. Not a long time ago we decided to rewrite our
>>      php code to support PDO, but after all test went good we faced with a
>>      problem, when pgpool reaches connection maximum in a several seconds
>>      with a 90% of idle connections. We have such a configuration:
>>
>> num_init_children = 100
>> max_pool = 2
>> child_life_time = 300
>> child_max_connections = 20
>> connection_life_time = 20
>> client_idle_limit = 20
>>
>> Without a PDO extension, everything works great, we have 40-45 pgpool
>> processes running on a server at an average. After we enabling PDO in
>> our code, pgpool process starting to grow very fast until
>> num_init_children and 90 of them are with idle status. The problem
>> does not exist without pgpool in a midle (if we connect to database
>> directly, we are using postgresql 9.1).
>>
>>   We also tried to increase num_init_children but no effect, maximum is
>>   reached in a several seconds..
>>
>> Our php script uses  such a logic:
>> $this->_connection = new PDO();
>>
>> Using $this->_connection
>>
>> $this->_connection = NULL;
>>
>> And we are not using persistence mode..
>>
>> May be someone know the solution?
> I think by setting NULL to $this->connection PDO does not disconnect
> connection to pgpool immediately. That's the reason why connections to
> pgpool are filled up. In the past I confirmed this by using strace to
> see what PDO was doing. PDO did not send "close connection" packet to
> pgpool immediately when the PDO script set NULL to connection
> object. After creating new PDO object, eventually it sent the packet.
>
> I'm not sure this is a bug or feature of PDO though.
>
So, there is no solution for "workarounding" this "feature"? And why 
postgress itself does not complaint on such a behaviour of PDO and 
pgpool does?

-- 
Best regards

Aleksej Trofimov



More information about the pgpool-general mailing list