Prestazioni scarse di MySQL 5.5
Buongiorno,
ho un problema con MySQL versione 5.5.12
Installato su Windows Server 2008 R2 64 bit
4 x Intel Xeon E7520 1.87Ghz
16GB RAM
Il Server è dedicato a MySQL.
Ho trasferito i database da un server meno potente, dove era installata la versione 5.1 di MySQL e girava su Windows Server 2003 con 2 x Intel Xeon e 4GB di RAM.
I database installati sono all'incirca 10, il peso complessivo dei db è di circa 500MB, tutte le tabelle al loro interno sono di tipo innodb, ma non uso le transizioni, quindi la scelta dell'innodb è stata fatta solo perchè è più prestante di myisam.
Il server, in condizioni ottimali, deve rispondere a circa 300 query al secondo, con 80 connessioni simultanee ed un traffico di circa 700KB/s.
Prima di trasferire i database sul server nuovo, ho impostato gli stessi parametri su my.ini, aumentando alcuni paramatri come query_cache_size e key_buffer_size che dopo l'installazione mi venivano già proposti più alti.
Quando ho trasferito i database sul nuovo server, con mia grande sopresa ho notato che i processori rimansevano sempre al 100% e il database era molto lento.
Successivamente ho modificato il file my.ini con i seguenti parametri:
[client]
port=3306
[mysql]
default-character-set=latin1
[mysqld]
port=3306
basedir="C:/Program Files/MySQL/MySQL Server 5.5/"
datadir = "D:/MySQLDataFiles/data/"
character-set-server=latin1
default-storage-engine=INNODB
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
max_connections=800
query_cache_size=350M
table_cache=1520
tmp_table_size=125M
thread_cache_size=38
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=125M
key_buffer_size=548M
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size = 1M
innodb_data_home_dir="D:/MySQLDataFiles/"
innodb_additional_mem_pool_size=22M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=11M
innodb_buffer_pool_size = 10G
innodb_log_file_size = 2000M
innodb_thread_concurrency=66
skip-name-resolve
innodb = ON
innodb_log_files_in_group = 2
innodb_read_io_threads = 16
innodb_buffer_pool_instances=1
innodb_write_io_threads = 16
innodb_io_capacity = 500
innodb_max_dirty_pages_pct = 60
innodb_purge_threads = 1
innodb_adaptive_flushing = 0
innodb_doublewrite = 1
slow-query-log
long_query_time = 5
slow_query_log_file = "D:/Log/MySQL/SlowQuery.log"
log-slow-slave-statements
log-slow-admin-statements
log-error = "D:/Log/MySQL/Error.log"
La situazione sembra essere leggermente migliorata, ma quando vengono lanciate query di tipo SELECT su tabelle molto grandi, in particolare una di circa 300MB, la query viene restituita subito, ma successivamente MySQL occupa tutte le risorse per almeno per 5 minuti, di conseguenza MySQL risulta molto lento per tutte le altre richieste.
Come posso risolvere la cosa?
Mi sembra molto strano che con un server più performante MySQL occupi più risorse.
Cosa devo fare?
Grazie,
Matteo.
Edited 1 time(s). Last edit at 05/23/2011 04:07AM by Matteo Canella.