Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2334 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Démon mysql qui prend tout le proc

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Démon mysql qui prend tout le proc

n°1938098
Thordax
Shop smart. Shop S-Mart !
Posté le 05-11-2009 à 18:09:24  profilanswer
 

J'ai un blème avec un serveur Apache/PHP/MySQL, la version de MySQL est la 4.1.22. En gros, je fais de multiples accès à ma base avec des index placés de manière assez basique (en gros dès que je fais un select en base avec un WHERE, je rajoute l'index au niveau de la colonne associée au WHERE) mais qui me semblent efficaces.
 
Seul problème, à force de rajouter des lignes dans ma table de logs, et de rechercher des infos dans cette même table de logs, le processus mysqld finit par prendre 50 à 60% du proc à lui tout seul (dans le cas de tests poussés) là où il n'en prenait que 5% grand max quand la table en question était vide.
 
Les tables sont toutes en MyISAM, j'ai tenté de les changer en InnoDB, et ça change rien. Quelqu'un saurait-il me dire comment optimiser ce point, si tant est qu'on puisse faire quelque chose ?


---------------
Atari 520 ST 256 Ko
mood
Publicité
Posté le 05-11-2009 à 18:09:24  profilanswer
 

n°1938113
flo850
moi je
Posté le 05-11-2009 à 18:58:28  profilanswer
 

logguer moins ?  
partitionner la table ?  
ajouter des index ajoute un surcout à l'insertion, c'est pas toujours intéressant


---------------

n°1938132
Thordax
Shop smart. Shop S-Mart !
Posté le 05-11-2009 à 20:21:21  profilanswer
 

All right. Alors le partitionnement, je crois que ça fonctionne depuis MySQL 5 uniquement, ça vaudrait surement le coup que je passe à cette version pour tenter le coup. Logger moins malheureusement c'est impossible.
 
Et pour ce qui est des index, je vais essayer d'en mettre moins, si c'est contreproductif. Merci pour ta réponse :jap:


---------------
Atari 520 ST 256 Ko
n°1938137
flo850
moi je
Posté le 05-11-2009 à 20:43:21  profilanswer
 

c'est un *poil* agressif ta signature  
 
sans indiscretion , tu fais quoi pour réussir a mettre à genoux une bdd juste en logant ? Est ce que tu n'aurai pas intéert a faire juste du log dans un fichier , puis relecture au fil de l'eau ?


---------------

n°1938141
Thordax
Shop smart. Shop S-Mart !
Posté le 05-11-2009 à 21:08:31  profilanswer
 

flo850 a écrit :

c'est un *poil* agressif ta signature  
 
sans indiscretion , tu fais quoi pour réussir a mettre à genoux une bdd juste en logant ? Est ce que tu n'aurai pas intéert a faire juste du log dans un fichier , puis relecture au fil de l'eau ?


Ca peut être une idée ouaip. Le problème c'est qu'il faudrait changer toute l'infra du serveur en question donc ça demanderait un changement de fond assez lourd.
 
Par ailleurs, c'est un serveur qui sera très très fortement sollicité à l'avenir (des dizaines de milliers d'insert et de select par jour)

n°1938143
flo850
moi je
Posté le 05-11-2009 à 21:13:36  profilanswer
 

c'est pas tant que ça
100 000 insert par jours, ça fait quoi , 10 par seconde ?

 

sinon, il faut aussi te poser la question du dimensionnement du serveur. Mais dnas tous les cas , une mise a jour logiciel fera pas de mal


Message édité par flo850 le 05-11-2009 à 21:18:15

---------------

n°1938146
Thordax
Shop smart. Shop S-Mart !
Posté le 05-11-2009 à 21:20:26  profilanswer
 

Yep :d Merci pour le tip. Et sinon, le serveur en question était sur une VM, à voir si le fait de le mettre seul sur une machine physique ne peut pas améliorer les choses [:klemton]


Message édité par Thordax le 05-11-2009 à 21:20:32
n°1938148
flo850
moi je
Posté le 05-11-2009 à 21:23:00  profilanswer
 

on ne mets JAMAIS une bdd sur une VM  
ça plombe les perfs d'une force ( à cause des accès disques)


---------------

n°1938150
Thordax
Shop smart. Shop S-Mart !
Posté le 05-11-2009 à 21:24:56  profilanswer
 

Ah oui donc forcément, c'est biaisé à la base [:tinostar]

n°1938154
flo850
moi je
Posté le 05-11-2009 à 21:33:02  profilanswer
 

fait un test avec la base de données sur le serveur physique


---------------

mood
Publicité
Posté le 05-11-2009 à 21:33:02  profilanswer
 

n°1938170
couak
Posté le 05-11-2009 à 23:08:26  profilanswer
 

flo850 a écrit :

on ne mets JAMAIS une bdd sur une VM  
ça plombe les perfs d'une force ( à cause des accès disques)


Je sais pas sur quoi tu bases cette affirmation mais moi j'ai pas de scrupules à mettre de l'oracle et du sql server en production sur des VM : tout est question de dimensionnement et de besoins
Tiens un peu de lecture : http://blogs.vmware.com/performanc [...] s-why.html


Message édité par couak le 05-11-2009 à 23:22:06
n°1938174
couak
Posté le 05-11-2009 à 23:21:28  profilanswer
 

Pour revenir au problème, je pense qu'il faudrait déjà isoler le problème. Le CPU est bouffé par mysqld, OK, mais sous quels conditions ? Quelles sont les commandes exécutées ?
Passer de MyISAM vers du InnoDB n'était pas forcément la meilleure des solutions, pour le peu que je comprend de ton problème c'est beaucoup d'insertion et de lecture : MyISAM aurait mieux fait l'affaire que InnoDB, à partir du moment où tu n'as pas besoin des fonctionnalités d'InnoDB
 
Après je ne suis pas un expert MySQL, mais disons qu'il devrait exister des pistes pour décomposer ce que fais ce fameux process, à l'instar de ce que permet Oracle ou SQL Server : bien dissocier la charge CPU entre ton application (tes fameux INSERT et SELECT) et la base (écritures de log, journalisation, etc.)
 
En résumé : identifier et isoler les points de contusion (applicatif ? base de données ?)
Ensuite la/les solution(s) viendront d'elles-mêmes : tuning SQL, paramétrage plus fin de la base via my.cnf, upgrade hardware, paramétrage OS, etc.

n°1938180
couak
Posté le 05-11-2009 à 23:38:04  profilanswer
 

Quelques pistes si tu arrives à isoler la cause de ton soucis :
 
Si problème d'insertion : mysql en ISAM possède une fonctionnalité intéressante pour le bulk insert, voir http://dev.mysql.com/doc/refman/4. [...] layed.html
 
Si problème de selection : grande chance que ce soit un plan d'exécution foireux
Cela peut aussi être un hardware et/ou OS mal dimensionnés
 
Si problème avec le fonctionnement même de mysql : revoir la configuration du moteur, pour peu que tu aies des paramètres par défaut pas adaptés (journalisation des requêtes SQL, etc.)
Après je sais pas si avec MySQL tu peux faire des trucs extrêmement pointus comme le permettent d'autres moteurs (taille des blocs, nombre de curseurs, taille des buffers...)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Démon mysql qui prend tout le proc

 

Sujets relatifs
MySql Trigger et VBnet[RESOLU] INSERT Mysql foireux
Démon utilisant D-Buspb enregistrement dans 2 tables base mysql
impossible de se connecter au serveur mysql à distance sous windows[php/mysql] lancer un programme php en cas d'updates de MySql [resolu]
[MySQL] encodage de caractère log windowsaffichage bases join table mysql
Prob PHP / MySQLupdate mysql par lignes d'un tableau
Plus de sujets relatifs à : Démon mysql qui prend tout le proc


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR