optimisation bdd mysql

WRInaute occasionnel
Bonsoir,

Je cherche a optimiser ma bdd, et je suis tombé sur le script tuning-primer.sh qui m'a donné les résultats ci-dessous.
Est-ce que quelqu'un saurait utilisé ces résultats ou du moins en tirer l'essentiel ?

Merci beaucoup pour votre aider

Code:
 ./tuning-primer.sh

        -- MYSQL PERFORMANCE TUNING PRIMER --
             - By: Matthew Montgomery -

MySQL Version 5.0.44-log x86_64

Uptime = 47 days 3 hrs 54 min 33 sec
Avg. qps = 188
Total Questions = 770046854
Threads Connected = 1

Server has been running for over 48hrs.
It should be safe to follow these recommendations

To find out more information on how each of these
runtime variables effects performance visit:
http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html
Visit http://www.mysql.com/products/enterprise/advisors.html
for info about MySQL's Enterprise Monitoring and Advisory Service

SLOW QUERIES
The slow query log is enabled.
Current long_query_time = 5 sec.
You have 5219 out of 770046875 that take longer than 5 sec. to complete
Your long_query_time seems to be fine

BINARY UPDATE LOG
The binary update log is NOT enabled.
You will not be able to do point in time recovery
See http://dev.mysql.com/doc/refman/5.0/en/point-in-time-recovery.html

WORKER THREADS
Current thread_cache_size = 4
Current threads_cached = 3
Current threads_per_sec = 0
Historic threads_per_sec = 0
Your thread_cache_size is fine

MAX CONNECTIONS
Current max_connections = 1000
Current threads_connected = 1
Historic max_used_connections = 330
The number of used connections is 33% of the configured maximum.
Your max_connections variable seems to be fine.

INNODB STATUS
Current InnoDB index space = 64 K
Current InnoDB data space = 4 M
Current InnoDB buffer pool free = 66 %
Current innodb_buffer_pool_size = 16 M
Depending on how much space your innodb indexes take up it may be safe
to increase this value to up to 2 / 3 of total system memory

MEMORY USAGE
Max Memory Ever Allocated : 1.68 G
Configured Max Per-thread Buffers : 3.28 G
Configured Max Global Buffers : 610 M
Configured Max Memory Limit : 3.88 G
Physical Memory : 23.59 G
Max memory limit seem to be within acceptable norms

KEY BUFFER
Current MyISAM index space = 721 M
Current key_buffer_size = 512 M
Key cache miss rate is 1 : 124
Key buffer free ratio = 50 %
Your key_buffer_size seems to be too high.
Perhaps you can use these resources elsewhere

QUERY CACHE
Query cache is enabled
Current query_cache_size = 72 M
Current query_cache_used = 53 M
Current query_cache_limit = 2 M
Current Query cache Memory fill ratio = 74.07 %
Current query_cache_min_res_unit = 4 K
MySQL won't cache query results that are larger than query_cache_limit in size

SORT OPERATIONS
Current sort_buffer_size = 512 K
Current read_rnd_buffer_size = 508 K
Sort buffer seems to be fine

JOINS
Current join_buffer_size = 132.00 K
You have had 0 queries where a join could not use an index properly
Your joins seem to be using indexes properly

OPEN FILES LIMIT
Current open_files_limit = 7010 files
The open_files_limit should typically be set to at least 2x-3x
that of table_cache if you have heavy MyISAM usage.
Your open_files_limit value seems to be fine

TABLE CACHE
Current table_cache value = 3000 tables
You have a total of 1162 tables
You have 2975 open tables.
Current table_cache hit rate is 4%
, while 99% of your table cache is in use
You should probably increase your table_cache

TEMP TABLES
Current max_heap_table_size = 936 M
Current tmp_table_size = 936 M
Of 319042 temp tables, 44% were created on disk
Perhaps you should increase your tmp_table_size and/or max_heap_table_size
to reduce the number of disk-based temporary tables
Note! BLOB and TEXT columns are not allow in memory tables.
If you are using these columns raising these values might not impact your
ratio of on disk temp tables.

TABLE SCANS
Current read_buffer_size = 1 M
Current table scan ratio = 29189 : 1
You have a high ratio of sequential access requests to SELECTs
You may benefit from raising read_buffer_size and/or improving your use of indexes.

TABLE LOCKING
Current Lock Wait ratio = 1 : 1278
You may benefit from selective use of InnoDB.
If you have long running SELECT's against MyISAM tables and perform
frequent updates consider setting 'low_priority_updates=1'
If you have a high concurrency of inserts on Dynamic row-length tables
consider setting 'concurrent_insert=2'.
 
WRInaute passionné
A l'arrache (tu dis pas trop de spec sur ton serveur, on a la RAM par tuning primer):
Code:
key_buffer_size = 1G
query_cache_min_res_unit = 1K
query_cache_limit = 4M
join_buffer_size = 256K

# Si ton système supporte
table_cache = 4096

tmp_table_size = 2G # 1G pour commencer, mais dépends de tes BLOG/TEXT
max_heap_table_size = 2G (même valeur que tmp_table_size)

A noter que ça dit clairement que tu n'utilises pas assez InnoDB pour tes tables, ça pourrait être intéressant de l'activer pour certaines tables.

Je ne connais pas ton site mais :
Current max_connections = 1000
Current threads_connected = 1
Historic max_used_connections = 330
Est énorme, j'ai rarement des cas où ça doit dépasser les 250.
Tu as été une fois à 330, mais si derrière le PHP et serveur rame, c'est des fois mieux de ne pas accepter plus de connexions.

Aussi, tu es en 5.0.44. si tu peux mettre à jour sur du 5.5, tu auras un gain de perf, surtout si tu te mets à utiliser de l'InnoDB.

(modos, peut-être section administration).
 
WRInaute passionné
Tu peux aussi monter "thread_cache_size" à 8, voir 16 (peut avoir l'effet inverse à 16, à 8, tu devrais avoir du "bien"), à mettre aussi en fonction du nombre de core qu'à ta machine.
 
WRInaute occasionnel
Julia41 a dit:
Tu peux aussi monter "thread_cache_size" à 8, voir 16 (peut avoir l'effet inverse à 16, à 8, tu devrais avoir du "bien"), à mettre aussi en fonction du nombre de core qu'à ta machine.


Merci pour ta réponse

Actuellement je suis en 5.0.44-log , je vais voir si cela est très facile de passer mysql en 5.5 ( je suis pas trop calé la dessus et j'ai pas envie de tout planter)

Voici un peut plus de données sur les ressources de mon serveur :

top - 16:21:40 up 62 days, 4:11, 1 user, load average: 7.39, 5.91, 5.87
Tasks: 413 total, 2 running, 411 sleeping, 0 stopped, 0 zombie
Cpu(s): 4.2% us, 1.2% sy, 0.0% ni, 92.1% id, 2.4% wa, 0.0% hi, 0.1% si
Mem: 24744184k total, 24524560k used, 219624k free, 1614464k buffers
Swap: 1051832k total, 88016k used, 963816k free, 18772240k cached

J'ai 8 processeurs :
cat /proc/cpuinfo | grep processor | wc -l
8

J'ai actuellement Current max_connections = 1000 , si j'ai bien compris c'est beaucoup trop haut quand on regarde le Historic max_used_connections = 330 ???

Quel est la signigication de threads_connected ??

J'ai thread_cache_size = 4

Quel est la signification de thread_cache_size ?

Merci beaucoup
 
WRInaute passionné
Thread Cache Size veut dire quasiment sa traduction littérale, à savoir, nombre de Thread que tu peux avoir en cache.
Vu ta machine et tes 24 Go de RAM, ça devrait sans problème pouvoir être augmenté;
Par contre, c'est quoi qui utilise autant le proc ?
T'as un load énorme, alors bon, je pensais que tu avais beaucoup moins et que ta machine dormais.
 
WRInaute occasionnel
Salut,

Je pense que c'est php qui utilise autant le proc, y a t'il un moyen de voir quel script provoquent ces montées en charge ?
<<<
top - 23:06:05 up 64 days, 10:56, 1 user, load average: 12.98, 8.01, 6.66
Tasks: 487 total, 2 running, 477 sleeping, 0 stopped, 8 zombie
Cpu(s): 15.5% us, 2.2% sy, 0.0% ni, 65.2% id, 16.8% wa, 0.0% hi, 0.3% si
Mem: 24744184k total, 24528600k used, 215584k free, 1702648k buffers
Swap: 1051832k total, 56056k used, 995776k free, 18117900k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7617 root 20 0 78660 12m 5888 R 75 0.1 0:03.87 php
1282 mysql 20 0 790m 322m 5548 S 19 1.3 313:55.39 mysqld
7609 root 20 0 76128 18m 6480 S 2 0.1 0:00.15 php
7637 root 20 0 87812 29m 6376 S 2 0.1 0:00.21 php
7634 root 20 0 76128 18m 6480 S 1 0.1 0:00.15 php
>>>
Merci
 
Discussions similaires
Haut