OVH Community, votre nouvel espace communautaire.

Trop de threads mysql connectés en même temps...


i-services
06/04/2004, 21h02
pourquoi tu crois que les hébergeurs déconseillent mysql_pconnect() et certains désactivent meme cette fonction

absolom
06/04/2004, 09h43
J'ai transformé tous mes site, en mettant un connect à la place de pconnect, j'ai plsu de threads en attente, et le chargement des pages se fait tout aussi rapidement je trouve.
J'ai de plus libéré de la mémoire, tout va beaucoup mieux, merci pour les conseils...

Momo
06/04/2004, 02h22
i-services écrivait :
ce n'est pas exact. L'exécution du script et la connexion à mysql se font sur le serveur et non sur le navigateur du client.
Exact!

Daweb
05/04/2004, 18h18
Merci de l'info
Si je n'avais jamais eu de problème de surcharge parce que mes sites sont peu fréquentés, je n'avais jamais pensé à ce détail !

i-services
05/04/2004, 11h54
Si ta page met 5 secondes à ce charger ta connexion à la base mysql dure 5 secondes.
ce n'est pas exact. L'exécution du script et la connexion à mysql se font sur le serveur et non sur le navigateur du client. Donc ça se passe comme ceci:

- le client demande une page
- la page est "compilée" sur le serveur
- le résultat html est envoyé au client

quand la page est envoyé au client, la connexion mysql est déjà fermée meme si tu a mis ton mysql_close() après le

là où cela prend du temps c'est lors de l'étape de "compilation" et c'est là qu'il faut optimiser la vitesse des lignes de code php et des requetes sql (pas des balises html que le serveur ne traite pas) entre le mysql_connect() et le mysql_close().

Momo
05/04/2004, 11h48
Bonjour Daweb,

Ouvrir la connexion mysql en début de fichier html puis la fermer en fin est préjudiciable pour ta base mysql.

Si ta page met 5 secondes à se charger, ta connexion à la base mysql dure 5 secondes.

Alors qu'en ouvrant en début et en refermant tout de suite avant de lancer le code html, tu as une durée de connexion plus faible. (<5 secondes)

Ce n'est pas forcément préjudiciable quand tu as peu de requêtes mais dès que tu as un forum ou beaucoup de connexions mysql tu atteints vite les limites du serveur mysql.
Ca rame, la mémoire sature, tu as des mysql_max_connection warning,...

i-services
05/04/2004, 10h17
c'est toujours mieux que p_connect() où les connexions s'accumulent et ne se referment pas

mais l'idéal est de faire le mysql_close() en haut du script, le traitement se fait généralement en haut et l'affichage en bas

Daweb
04/04/2004, 16h40
Tien du coup je me pose une question :

Est ce que on y gagne à faire comme tu l'a dis Iservice, par ce que moi j'ouvre la connexion au debut du fichier, la ferme à la fin, mais je fais souvent des appels à des tables dans le code :

Code PHP:
mysql_connect()

// traitement 1
?>


...

// traitement 2...
?>



mysql_close();
?>

absolom
04/04/2004, 15h30
OK, merci pour l'info, je vais donc faie ça, parceque la, j'ai trop de client aborted...

Je tiens au courant de l'évolution...

i-services
04/04/2004, 11h31
pas du tout, moi je me connecte avec mysql_connect en haut de chaque script et me déconnecte avec mysql_close() avant d'envoyer le html au navigateur

exemple

mysql_connect()

// traitement

mysql_close();
?>

...


et ça se passe très bien avec de nombreux accès mysql effectué par 2 serveurs web

absolom
04/04/2004, 10h52
J'ai fais un test, en mettant wait_timeout à 3600 au lieu de 28800, ça marche mieux, moins de threads connectés en même temps, mais le pb, c'est que je e retrouve avec pas mal de client aborted...

Tu me conseilles donc d'utiliser mysql_connect (), et de faire des close à la fin de chaque page donc...
Ok, mais je vais pas perdre en performance ?

Merci pour le conseil...

i-services
03/04/2004, 23h42
utilise mysql_connect()

absolom
03/04/2004, 17h58
Salut @ tous...
J'ai une 20aine de site sur mon dédié, et je suis quasiment tou tle temps à plus de 75/80 threads connectés ...
J'utilise une connection pconnect () de php sur tous mes sites, je n'ai donc pas besoin de faire de mysql_close () il me semble, ça ne marche pas sur le pconnect, non ?
Ou alors ça vient de la, et ul faut que je rajoute des mysql_close partout ?

Que me conseillez vous ?

Pour info, j'ai mis mon max connexion a 110.
Mais je voudrais que le nombre de thread connectés soit plus bas quand même, c'est bizzare.

Je pensais baissr le wait_timeout (il est par défaut à 28800 == 8 heures), ça vient peut être de la...

Merci d'avance...