2012-06-05 17 views
20

Spero che qualcuno possa essere in grado di offrire assistenza per l'ottimizzazione di un file my.cnf per un server di database mysql ad altissimo volume.Consigli per l'ottimizzazione delle prestazioni MySQL my.cnf

Our architecture is as follows: 

Memory  : 96GB 
CPUs  : 12 
OS & Mysql : 64-bit 
Disk Space : 1.2 TB 
DB Engine : MyISAM 

La nostra applicazione Web viene utilizzata da circa 300 client contemporaneamente. Abbiamo bisogno del nostro my.cnf sintonizzato per fornire le migliori prestazioni possibili per questa infrastruttura.

Sono perfettamente consapevole che gli indici e le query ottimizzate sono un fattore importante in questo, ma vorremmo iniziare con un sistema che sia configurato correttamente e quindi procedere con la reingegnerizzazione sistematica delle nostre query di conseguenza.

Here is our current my.cnf file content: 

[mysqld] 
datadir=/home/mysql 
socket=/home/mysql/mysql.sock 
user=mysql 

log-bin=mysql-bin 
server-id=1 
# Disabling symbolic-links is recommended to prevent assorted security risks 
symbolic-links=1 

log-slow-queries = /var/log/mysqld_slow_queries.log 
long_query_time = 10 

max_connections = 500 

key_buffer_size = 32768M 
#max_allowed_packet = 2M 
#table_open_cache = 128 
#sort_buffer_size = 1024K 
#net_buffer_length = 64K 
#read_buffer_size = 1024K 
#read_rnd_buffer_size = 1024K 
#myisam_sort_buffer_size = 8M 
query_cache_size = 128M 
query_cache_limit = 128M 

interactive_timeout = 300 
wait_timeout = 300 

# Added values after load testing 
thread_cache_size = 8 
#tmp_table_size = 256M 
#max_heap_table_size = 256M 
#table_cache = 512 
#join_buffer_size = 512 

log-error=/var/log/mysqld.log 

innodb_buffer_pool_size=128M 
#innodb_file_per_table 
#innodb_log_file_size=250M 
##innodb_buffer_pool_size=64M 
#innodb_buffer_pool_size=1024M 
#innodb_log_buffer_size=4M 
##log-bin=mysql-bin 

[mysqld_safe] 
log-error=/var/log/mysqld.log 
pid-file=/var/run/mysqld/mysqld.pid 

#[myisamchk] 
#key_buffer = 64M 
#sort_buffer = 64M 
#read_buffer = 16M 
#write_buffer = 16M 

Qualche suggerimento? Grazie gente.

Edit by RolandoMySQLDBA

Poiché tutti i dati che si è MyISAM, si prega di eseguire questa query e mostrare l'uscita

SELECT CONCAT(ROUND(KBS/POWER(1024, 
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999), 
SUBSTR(' KMG',IF(PowerOf1024<0,0, 
IF(PowerOf1024>3,0,PowerOf1024))+1,1)) 
recommended_key_buffer_size FROM 
(SELECT LEAST(POWER(2,32),KBS1) KBS 
FROM (SELECT SUM(index_length) KBS1 
FROM information_schema.tables 
WHERE engine='MyISAM' AND 
table_schema NOT IN ('information_schema','mysql')) AA) A, 
(SELECT 3 PowerOf1024) B; 

@ Rolando - Grazie ... i risultati di quella query era 4G.

+0

Stai vivendo la lentezza specifica sulla base delle impostazioni correnti? – Randy

+0

Questa è una buona macchina per soli 300 utenti web, anche di più se si tratta solo di un server DB. È Windows o Linux? In entrambi i casi, generalmente raccomando di avere dischi/LUN separati per OS/Swap e il volume di dati (dove risiede il datadir). Stai lontano dal raid del software, ecc. C'è uno strumento chiamato 'mk-query-advisor' che potrebbe aiutarti a mettere a punto questa configurazione. A meno che l'applicazione 'front-end' non faccia la 'cosa giusta' (memorizzazione dei dati statici nella cache, solo query quando necessario, ecc.), L'ottimizzazione potrebbe non farti guadagnare molto. – JMC

+0

È anche possibile aggiungere uno script di manutenzione (dopo un backup ovviamente) che chiama "OPTIMIZE TABLE tbl_name" ogni settimana per aiutare a mantenere le cose ottimizzate. Anche esaminando partizionare tabelle di grandi dimensioni, ecc. – JMC

risposta

22

Provare a iniziare con la procedura guidata Percona e confrontare i loro consigli con le impostazioni correnti uno per uno. Non preoccuparti, non ci sono tante impostazioni applicabili come potresti pensare.

https://tools.percona.com/wizard

Ognuno punta a key_buffer_size prima che avete affrontato. Con una memoria da 96 GB sarei diffidente nei confronti di qualsiasi piccolo valore predefinito (probabilmente solo 96 milioni!).

+0

Grazie KCD! Sono andato lì e proverò le impostazioni consigliate. Questo è stato molto apprezzato! – Skittles

+0

Nessun problema. Qualcuno di questi risultati varia molto da quello che hai avuto? – KCD

+0

Sì ... un bel po 'di cambiamenti. Appena riavviato il server usandoli.Dovremo aspettare per vedere cosa produrrà domani un giorno di produzione completo. Pieno di crons e rappresentanti del servizio clienti che utilizzano il sistema. – Skittles

Problemi correlati