[AlternC-dev] connect ou pconnect

Retour à l'archive de la liste
Le site d'AlternC
Google Custom Search

Stéphane HENRY stef at heberge.net
Mar 19 Oct 17:49:44 CEST 2004


Oui tu as parfaitement raison. En fait je me suis mal exprimé : il faut
toujours utiliser mysql_connect et jamais mysql_pconnect.
Pour les performances, l'outil que je conseille est un "PROXY" mysql. En
fait toutes les connexions à la base se font sur la machine locale
(localhost) avec mysql_connect, c'est le proxy lui même qui a les
connexions permanentes.
En plus d'être performant dans environnement très sollicité, ce genre
d'outil permet de faire du load balancing. Par exemple : si vous faites de
la réplication avec mysql, vous pouvez avoir des connexions vers un
serveur de base de données en particulier. Couplé avec un système de
balancement par noeud apache comme ipvs, c'est très performant.

Stéphane HENRY



> On a effectivement tendance à croire que les connections persistantes
> (pconnect()) vont aider à alléger la charge d'un serveur, mais il n'en
> est rien. Dans mon expérience, les mysql_pconnect() épuisent
> rapidement les connexions disponibles du serveur MySQL, et il est plus
> fiable et efficace d'utiliser des mysql_connect() normaux.
>
> Pourquoi? Eh bien c'est simplement à cause que le pconect ne
> fonctionne tout simplement pas sous PHP. Chaque "process" PHP est très
> éphémère: il est chargé à l'exécution d'une page et souvent déchargé à
> la fin de l'exécution de ladite page. La "cache" de connection ne
> fonctionne pas *entre* les différentes pages PHP, contrairement à ce
> que l'on aurait tendance à croire.
>
> L'effet du mysql_pconnect() est alors catastrophique: en plus d'avoir,
> comme dans le cas du mysql_connect(), plusieurs connexions
> simultanées, ces connexions ne se ferment pas à la fin de l'exécution
> du script et reste ouverte jusqu'à l'épuisement d'un "timeout", en
> consommant les resources du serveur MySQL.
>
> mysql_pconnect() == evil.
>
> C'Est pourquoi Koumbit recommande l'utilisation du flag suivant dans
> le php.ini:
>
> ; Allow or prevent persistent links.
> mysql.allow_persistent = Off
>
> Ref: http://koumbit.org/wiki/Proc%c3%a9dures/PhpDotIni
>
> Je suggère donc fortement que AlternC n'utilise pas
> mysql_pconnect(). D'ailleurs, j'ai eu des problèmes avec AlternC
> directement à cause de ceci:
>
> http://bugs.koumbit.net/bug_view_page.php?bug_id=0000077
>
> Si ce n'était que de moi, je ferais un search & replace de tous les
> pconnect()s dans le source de AlternC.
>
> A.
>




Plus d'informations sur la liste de diffusion Dev