|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Invité régulier
![]() Inscription : septembre 2006 Messages : 24 ![]() |
Bonjour,
Nous venons de mettre en place un site web sous EzPublish, et nous rencontrons malheureusement quelques soucis, notamment un problème de performance sur le serveur Mysql. Etant plutôt habitué au monde Oracle, je dois avouer que j'essaye de chercher comme je peux avec notre ami google, mais ce n'est pas évident de s'y retrouver. Voici le souci : Depuis la mise en ligne, le serveur MySQL (sur un serveur Ubuntu) explose et le process affiche 200% de CPU Usage en moyenne. Le Load Average peut monter à 10... J'ai tenté quelques améliorations mais un peu à l'aveugle... Voici le top : Code :
Code :
Code :
Cactus. |
||||||
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : mars 2005 Messages : 66 ![]() |
Salut,
Ton serveur n'a que 2go de RAM et tu as alloué trop de mémoire aux buffers globaux. key_buffer = 1G innodb_buffer_pool_size=2G Du coup, tu peux faire swapper le serveur dès que tu commences à avoir beaucoup d'activité dessus,car les buffers "per session" vont aussi consommer de la ram. Exécute mysqltuner.pl (http://blog.mysqltuner.com/) . Il te fera des précos de tuning, surtout te préviendras si tu mets des paramètres trop haut. Quelles sont les valeurs des paramètres max_heap_table_size et tmp_table_size ? au vue de la complexité des requêtes ezpublish (bcq de jointures, order by, group by, ...)mysql doit pouvoir créer le maximum de tables temporaires en ram et non sur disques. (http://dasini.net/blog/2010/05/28/au...ap_table_size/) Le serveur est-il dédié à mysql ? Quelles sont la volumétrie des bases ? et leur type MyISAM/innoDB ? Quelle est la version de mysql ? Si tes tables sont en innodb, je te conseille de passer en mysql 5.5/innodb. Mysql a fait un gros travail d'optimisation de ce moteur de stockage et des benchs démontrent des gains de performances assez impressionnants. Seb
__________________
DBA SQLServer, Oracle, Mysql, DB2, Postgresql |
|
|
00
|
|
|
#3 | ||||
|
Invité régulier
![]() Inscription : septembre 2006 Messages : 24 ![]() |
En effet, j'avais adapté le innodb_buffer_pool_size en fonction de la RAM, et j'étais persuadé qu'il y avait 4G
![]() Résultat, j'ai mis finalement les 4G en ram, et j'avais pris comme directives pour Key_Buffer : 25% de la RAM, et Innodb_buffer : 50% de la RAM. Après modification, voici ce que reporte mysqltuner : Code :
![]() J'ai passé aussi le query_cache_limit à 4M, bien que je ne sache pas vraiment comment le fixer. (Fixer la valeur puis relancer mysqltunner régulièrement ???) Sinon, pour répondre : Version Mysql : 5.1.41. Monter de version alors que l'on vient juste de passer en production, ça peut être un peu cavalier non ? Le serveur est dédié à MySQL, il dessert 2 frontaux apache sur lesquel j'ai 3 nodes EzPublish (Prod, Preprod, Minisite) Apparement les tables sont en Innodb, même si je n'ai pas trouvé comment en être sûr. Voici la volumétrie de mes schémas Mysql : Code :
|
||||
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : mars 2005 Messages : 66 ![]() |
Salut,
pour connaître le type de table: Code :
SELECT TABLE_SCHEMA,TABLE_NAME,ENGINE FROM TABLES; - tu ne semble pas avoir de tables myisam (KEY buffer size / total MyISAM indexes: 1.0G/4.6M) Tu peux te permettre de descendre la key_buffer_size à 128m par exemple). Et donc d'augmenter un peu l'innodb_buffer_size. - Tu as 23% de tables temporaires créées sur disk, n'hésite à augmenter les paramètres max_heap_table_size et tmp_table_size. Quelles sont les valeurs de: sort_buffer_size, read_buffer_size, read_rnd_buffer_size, join_buffer_size ? Est-ce un site à forte affluence ? As-tu constater des locks lorsque le serveur monte en charge ? As-tu des indicateurs sur l'activité mysql ? nb de select/insert/update/delete par secondes, etc ... (Cacti à un template Mysql très bien fait pour tracer l'activité d'une instance mysql ? Seb
__________________
DBA SQLServer, Oracle, Mysql, DB2, Postgresql |
|
|
00
|
|
|
#5 | ||||
|
Invité régulier
![]() Inscription : septembre 2006 Messages : 24 ![]() |
Voici la répartition des tables MyISAM Et InnoDB :
Code :
Voici les valeurs anciennes et nouvelles sur les différents paramètres : Code :
C'est un site institutionnel avec une affluence qui peut aller aux alentours de 90 000 utilisateurs par jour lorsqu'il y a des campagnes / newsletter. Comment je constate les locks ? Pour superviser l'activité de la base, je ne me suis pas encore renseigné du comment ça marche exactement, il faut que je vois si on peut intégrer le template Mysql au Cacti que l'on a en place actuellement. |
||||
|
|
00
|
|
|
#6 | ||
|
Membre du Club
![]() Inscription : mars 2005 Messages : 66 ![]() |
Les valeurs que vous avez misent sont très correctes.
Un exemple de script pour monitorer les locks: Code :
Au regard des requêtes construites pas Ezpublish (transmises dans votre premier post), et en lisant l'article suivant, http://www.media-business.biz/conten...nfer-du-devoir, il y a de quoi se faire des frayeurs avec ce cms sur des sites à forte affluence. Seb
__________________
DBA SQLServer, Oracle, Mysql, DB2, Postgresql |
||
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : septembre 2006 Messages : 24 ![]() |
Je vais commencer à surveiller un peu plus en détail maintenant que j'ai fixé ces paramètres...
Par rapport au script mysqltuner, je suppose que si je fais le ménage dans les schémas obsolètes il devrait adapter son rapport. Par contre, comme il me dit que toutes les tables InnoDB son fragmentées, faut-il faire une defrag régulièrement ? (avec optimize table si j'ai bien lu) Et tant que la ligne concernant les tables temporaires créées sur disque est en warning, je peux augmenter le tmp_table_size et max_heap_table_size ? Il y a des limites pour ces paramètres ? Merci pour l'aide en tout cas ! |
|
|
00
|
|
|
#8 | |||
|
Membre du Club
![]() Inscription : mars 2005 Messages : 66 ![]() |
Citation:
Citation:
Citation:
Ton serveur est un physique ou une VM ?
__________________
DBA SQLServer, Oracle, Mysql, DB2, Postgresql |
|||
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() Inscription : septembre 2006 Messages : 24 ![]() |
Pour l'optimize, je le note. Je verrai ce que je peux faire ce week end à ce sujet quand il n'y aura plus d'activité sur la preprod.
Je suis passé à 128M pour les deux paramètres, et idem ce week end je verrai pour rajouter 4Go de swap en plus. Nous sommes sur des VM |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 1 ![]() |
Salut Cactus,
Merci Seb pour toutes ces infos. Je viens de suivre un livre sur l'optimisation des performances des applications web. Je pense que cela pourrait t'aider, notamment au niveau du cheminement. Pour le télécharger : Améliorer vos performances web. Ce que tu cherches sur le SQL se trouve dans le livre 4, mais la démarche est également intéressante. Nico |
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() Inscription : mars 2005 Messages : 66 ![]() |
Salut,
Ta VM a combien de vCPU ? Si tu n'en a qu'un seul, je te conseille d'en déclarer 2 pour diminuer le load average. Il paraît qu'il ne faut trop en mettre (de vcpu) car ca peut-être contre-performant(si le système hôte est déjà très sollicité en terme de CPU. Ca génère des attentes cpu) Tu parles d'ajouter 4Go de swap. Ajoute plutôt 4Go de RAM au vue de la volumétrie de tes bases. T'es sur Vmware ? Seb
__________________
DBA SQLServer, Oracle, Mysql, DB2, Postgresql |
|
|
00
|
|
|
#12 |
|
Invité régulier
![]() Inscription : septembre 2006 Messages : 24 ![]() |
Bonjour,
La VM a déjà 2 Vcpu, et ce n'est effectivement pas conseillé d'en déclarer plus à moins de faire de la réservation de coeur pour cette machine, et de l'exclusion pour toutes les autres... Nous sommes effectivement sous VmWare J'ai rajouté 4 Go de ram, le site est toujours aussi lent mais la base ne tombe plus. Apparement, il y a un problème de cache sur le dev EzPublish qui a été fait, ce qui augmente de manière drastique le nombre de requêtes sql effectuées pour afficher une page, et donc surcharge la base. Maintenant que cette dernière ne tombe plus, je vais pouvoir faire remonter ce problème de cache. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com