Jump to content

Optimisation processus Mysqld


salimbo
 Share

Recommended Posts

Bonjour à tous,

J'ai un gros souci sur mon serveur depuis qu'il apparait en meilleur position sur google ...

J'ai en fait le processus mysqld qui consomme environ 85% du cpu, hébergé sur une dedibox.

Voici un extrait du top:

top - 12:48:23 up 107 days, 23:10,  1 user,  load average: 6.12, 7.14, 7.42
Tasks: 212 total, 5 running, 207 sleeping, 0 stopped, 0 zombie
Cpu(s): 73.4% us, 26.6% sy, 0.0% ni, 0.0% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 1018456k total, 814096k used, 204360k free, 157312k buffers
Swap: 1044216k total, 512452k used, 531764k free, 425536k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3254 mysql 15 0 123m 38m 4400 S 84.6 3.9 596:29.36 mysqld
5004 www-data 15 0 21832 7700 3036 S 4.0 0.8 0:03.99 apache2
3525 www-data 16 0 22088 8164 3264 S 3.7 0.8 0:08.89 apache2
617 www-data 16 0 22100 8420 3468 S 1.0 0.8 0:22.17 apache2
5419 www-data 15 0 21816 7696 3040 S 1.0 0.8 0:01.27 apache2
4697 www-data 15 0 21844 7820 3136 S 0.7 0.8 0:04.13 apache2
5408 www-data 16 0 21832 7724 3064 S 0.7 0.8 0:01.50 apache2
5577 www-data 15 0 21824 7680 3040 S 0.7 0.8 0:00.36 apache2
5608 www-data 15 0 21936 7720 3036 S 0.7 0.8 0:00.54 apache2
5633 root 15 0 2332 1196 856 R 0.7 0.1 0:00.24 top
4701 www-data 15 0 21844 7812 3128 S 0.3 0.8 0:02.97 apache2
5183 www-data 15 0 21816 7588 3020 S 0.3 0.7 0:02.76 apache2
5415 www-data 15 0 22192 8732 3692 S 0.3 0.9 0:01.81 apache2
1 root 15 0 1564 472 444 S 0.0 0.0 0:28.91 init
2 root 34 19 0 0 0 S 0.0 0.0 0:00.08 ksoftirqd/0
3 root 10 -5 0 0 0 S 0.0 0.0 0:00.01 events/0
4 root 10 -5 0 0 0 S 0.0 0.0 0:07.65 khelper

Avez vous une idée d'ou cela puisse venir ? Probleme requete ? Probleme script ? Comment faire pour identifier ce qui pose probleme ?

Merci à tous de votre aide

Salim

Link to comment
Share on other sites

Ce n'est pas tellement le process mysql qui pompe, c'est surtout que tu utilises 500MB de swap et de ce fait mysql utilise la mémoire virtuelle (sur disque) au lieu de la mémoire physique (en RAM).

Cela signifie donc que ton serveur n'a pas assez de mémoire... ou que tu tournes trop de tâches.

Essaie de diminuer le nombre de process ...

Dan

Link to comment
Share on other sites

Merci Dan pour ta réponse,

Est-il possible d'augmenter la mémoire swap de mon serveur sans tout résintaller ?

Comment faire pour diminuer le nombre de process ?

Par avance,

Merci ;-)

PS: je n'ai pas eu de notification par email, c'est pour cela que j'ai tardé à répondre, je ne viens de voir ton post que maintenant ...

Edited by salimbo
Link to comment
Share on other sites

Augmenter le swap ne te servira à rien. C'est justement l'utilisation de celui-ci qui ralentit le serveur, et au plus tu l'utilises, au plus le serveur sera lent.

Tu peux regarder du côté d'Apache, éviter de lancer trop de process par défaut (MinSpareServers et MaxSpareServers), augmenter le MaxKeepAliveRequests, le MaxRequestPerChild et éventuellement le MaxClients.

Mais en toute logique, si tu n'as pas édité ces valeurs elles devraient être à peu de choses près correctes.

Il faut bien avouer qu'une Dedibox a ses limites (comme un Kimsufi chez OVH) et ne supporte pas les grosses charges.

Cela se présente lorsque tu as combien de visiteurs simultanément ?

Link to comment
Share on other sites

Ok Dan, bien compris pour la mem swap... :thumbsup:

Le problème, c'est que cela se produit lorsque j'ai une vingtaine de personne sur le site simulatanément ... C'est, à mon avis pas normal...

Je pense que cela doit peut etre venir de ma base qui ne doit pas etre optimisé, non ?

J'ai activer le logging des slow-query, et il est vrai que j'en ai pas mal dedans.. mais lorsque que je fais un explain du log slow-query, cela ne de me donne rien du tout, aucun index proposé pour aucune table....

Sais tu comment faire pour augmenter la taille du buffer mysql en mémoire, ou comment dumper l'éxécution des slow-query ?

Merci par avance^Dan,

Salim

Edited by salimbo
Link to comment
Share on other sites

Sais tu comment faire pour augmenter la taille du buffer mysql en mémoire, ou comment dumper l'éxécution des slow-query ?

Quelle version de mysql tournes-tu ?

Il faut au moins mysql4 pour utiliser le cache. Et dans ce cas c'est au niveau du fichier my.cnf (dans /etc ou /etc/mysql/ selon les distributions Linux)

Tu dois y trouver une directive query_cache_size suivie d'une valeur, mais ce n'est pas la seule valeur à modifier.

Que veux-tu dire par "dumper l'exécution des slow-query" ?

Link to comment
Share on other sites

Dan,

Je suis en Mysql 5.0.22

Concernant le "dump de slow-query", j'ai lu quelque part que l'on pouvait améliorer leur exécution en faisant un "dump", mais je t'avoue que j'ai pas trop bien compris ... Je ne pourrais pas etre plus clair.

Sinon, je pense que je devrais optimisé ma base et mes requetes en utilisant des index et en évitant les "LIMIT". Parallement, je vais essayé d'augmenter la taille des buffers.

Qu'en penses-tu ? Sais tu comment faire pour les buffers ?

Merci d'avance

PS: La notif par email ne fonctionne pas chez moi... en tout cas, pour ce qui est de ton forum, c'est hyper rapide !!!!

Edited by salimbo
Link to comment
Share on other sites

C'est dans le fichier de configuration de mysql (my.cnf) qu'il faut changer les paramètres tels que le nombre maxi de connexions simultanées, la taille des caches, etc...

Fais une recherche avec "locate my.cnf" pour trouver ce fichier sur ton serveur.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...