[PostgreSQL+PHP] pconnect-ions blijven open en onbruikbaar

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Sircuri
  • Registratie: Oktober 2001
  • Niet online

Sircuri

Volledig Appelig

Topicstarter
Ik heb PHP 4.3.3 en PostgreSQL_beta_4 draaien op een Win2k machine. Werkt prima, alleen na een paar requests op mijn website in ontwikkeling krijg ik de melding dat het er al te veel connecties zijn met de database. Ik gebruik de pg_pconnect functie om connecties persistent te houden. Dit lijkt alleen niet te werken, want als ik ga kijken in de TaskManager van win2k dan zie ik in mij configuratie dat er 32 instanties van postgres.exe draaien. Niks mis mee, maar PHP moet ze wel hergebruiken en dat gebeurt dus niet.

Nu heb ik mijn php code aangepast en gebruik nu als test pg_connect i.p.v. pg_pconnect en nu worden wel steeds alle instanties van postgres.exe afgesloten. Maar dit heeft een groot negatief effect op de performance.

toevoegingen:
- PHP.ini bevat de statement dat de connecties naar postgresql hergebruikt moeten worden (staat ook default op 'on').
- ik heb ook al de config van postgresql aangepast en max-connections op 64 gezet, maar dat resulteert alleen maar in juist 64 open connecties naar de DB

Weet iemand wat er aan de hand kan zijn? Waarom hergebruikt PHP die persistent connecties niet?

Signature van nature


Acties:
  • 0 Henk 'm!

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 12-09 01:23
Be careful when using Apache/PHP dynamic module/PostgreSQL :
in httpd.conf (Apache conf) default MaxClients is 150, whereas default PG's max_connections is 32 which is much fewer than 150. You have to set max_connections to at least MaxClients (and pg's shared_buffers to 2*max_connections at least) to avoid PG's errors with pg_pconnect like : "Sorry, too many clients already connected"
Misschien is dit de oplossing?? (gevonden in de manual comments op php.net/pg_pconnect).
Verder zou ik even kijken naar pgsql.max_links en Persistent Database Connections

[ Voor 9% gewijzigd door Postman op 14-11-2003 20:26 ]


Acties:
  • 0 Henk 'm!

  • Sircuri
  • Registratie: Oktober 2001
  • Niet online

Sircuri

Volledig Appelig

Topicstarter
klopt, dat had ik ook gelezen. Had er alleen niet zo aan gedacht. PHP gaat dus hoe dan ook 150 connecties maken terwijl PostgreSQL er maar 32 heeft te verdelen. Zo had ik er dus niet aan gedacht.
Ik ga het meteen even proberen, want dat zou dan inderdaad wel eens de oplossing kunnen wezen.
Bedankt in ieder geval!!

[edit]

He bedankt joh, dat was inderdaad de oplossing!

In mijn geval heb ik de maximale aantal connecties in php.ini verlaagd naar 32, want mijn servertje kan geen 150 persisten PostgreSQL connections aan... loopt ie een beetje te vol :)

[edit]

[ Voor 29% gewijzigd door Sircuri op 15-11-2003 10:50 ]

Signature van nature