Salut !
Mon MySql est extrèmement sensible aux petites surcharges du système et aux requetes faites la meme seconde.
J'ai équipé mes cgi (perl) de chronometres et peux ainsi tracer le temps moyen en ms et voir quelle partie du code est longue.
Quand tout se passe bien, le cgi au complet s'execute en 120ms - Et lorsque 5 requetes tombent la meme seconde, ca pousse parfois le tout à 4 secondes et plus ! et ce sont les requetes sql qui sont longues à ce moment.
Ce site par exemple, a 5000 visiteurs par jour et je dois avouer qu'il est très équipé en sql. (il y a 1 ou 2 tables de 200000 lignes mais 50MB chacune env)
=== SERVEUR : ===
Code :
- Xeon X3360 4 @ 2.83GHz
- 8GB DDR
- Linux 2.6 grsec slackware
- Mysql 5.1.46
|
=== MY.CNF : ===
Code :
- skip-external-locking
- key_buffer_size = 256M
- key_cache_age_threshold = 300
- key_cache_division_limit = 85
- key_cache_block_size = 4096
- max_allowed_packet = 16M
- table_open_cache = 256
- sort_buffer_size = 2M
- read_buffer_size = 128K
- tmp_table_size = 128M
- max_heap_table_size = 128M
- query_prealloc_size = 32M
- thread_cache_size = 64
- read_rnd_buffer_size = 16M
- net_buffer_length = 2K
- thread_stack = 128K
- query_cache_size = 512M
- query_cache_limit = 2M
- slow_query_log
- long_query_time = 0.5
- bind-address = 127.0.0.1
- server-id = 1
|
+ relay config...
parce que j'ai répliqué sur un slave server-id=2 avec basse priorité et petite mémoire juste pour mysqldump
Le master est nice -7 ; slave est nice 8
Apache est nice -8
=== MY SQL STATISTICS GRAPH : ===
Comme vous pouvez le voir :
- mon disque est tres peu utilisé (moins de 1 pour 1000)
- mon cache est très utile: 15 à 20% des requetes viennent du cache et il n'est pas plein
- j'ai 1 connexion par /s et 10 queries /s
- dans la courbe du 2010-09-11 on voit parfois jusqu'a une somme de 60 secondes de slow queries, par minute. (somme des queries plus longues que 0.5s) ce sont les petites surcharges du serveur qui me poussent parfois la moyenne des cgi à pres de 7s !
Alors comment pourrais-je etre sur que MySql réponde toujours dans un temps raisonnable ?
Est-ce que je devrais prioriser MySql plus que apache ?
Je ne vois pas trop comment donner plus de pouvoir à MySql sachant que son cache n'est pas plein et que tous les .MYI rentrent dans key_buffer_size.
Merci beaucoup par avance pour vos idées !
Message édité par MisterBark le 18-09-2010 à 08:42:14
---------------
La vie c'est comme une boite de chocolats, on ne sait jamais sur quoi on va tomber. (Forrest Gump)