2012-06-05 15 views
20

Ich hoffe irgendwie, dass jemand in der Lage sein könnte, einige Unterstützung bei der Optimierung einer my.cnf-Datei für einen extrem hohen MySQL-Datenbankserver anzubieten.MySQL my.cnf Leistungsoptimierung Empfehlungen

Our architecture is as follows: 

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

Unsere Webanwendung wird von etwa 300 Clients gleichzeitig verwendet. Wir brauchen unser my.cnf abgestimmt, um die bestmögliche Leistung für diese Infrastruktur zu bieten.

Ich bin mir bewusst, dass Indizes und optimierte Abfragen ein wichtiger Faktor dafür sind, aber wir möchten mit einem System beginnen, das richtig konfiguriert ist, und dann danach systematisch unsere Abfragen entsprechend neu gestalten.

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 

Irgendwelche Vorschläge? Danke Leute.

Bearbeiten von RolandoMySQLDBA

Da alle Daten Sie MyISAM ist, benutzen Sie bitte diese Abfrage ausführen und zeigen die Ausgabe

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 - Danke ... die Ergebnisse dieser Abfrage war 4G.

+0

haben Sie eine spezifische Langsamkeit, die auf Ihren aktuellen Einstellungen beruht? – Randy

+0

Das ist eine ziemlich gute Maschine für nur 300 Web-Benutzer, noch mehr, wenn dies nur ein DB-Server ist. Ist das Windows oder Linux? Wie auch immer, ich empfehle generell separate Festplatten/LUNs für das OS/Swap und das Datenvolume (wo sich das Datenverzeichnis befindet). Halten Sie sich von Software-Raid usw. fern. Es gibt ein Tool namens "mk-query-advisor", mit dem Sie dieses Setup optimieren können. Wenn Ihre 'Front-End'-Anwendung nicht das' Richtige 'tut (statisches Daten zwischenspeichern, Abfragen nur bei Bedarf usw.), kann Tuning Ihnen möglicherweise nicht viel bringen. – JMC

+0

Sie können auch ein Wartungsskript hinzufügen (natürlich nach einer Sicherung), das jede Woche 'OPTIMIZE TABLE tbl_name' aufruft, um die Dinge optimiert zu halten. Ich untersuche auch die Partitionierung großer Tabellen usw. – JMC

Antwort

22

Beginnen Sie mit dem Percona-Assistenten und vergleichen Sie ihre Empfehlungen nacheinander mit Ihren aktuellen Einstellungen. Keine Sorge, es gibt nicht so viele Einstellungen, wie Sie vielleicht denken.

https://tools.percona.com/wizard

Jeder verweist auf key_buffer_size erste, die Sie angesprochen haben. Mit 96 GB Speicher würde ich auf jeden kleinen Standardwert achten (wahrscheinlich nur 96M!).

+0

Danke KCD! Ich bin dorthin gegangen und werde ihre empfohlenen Einstellungen ausprobieren. Das war sehr geschätzt! – Skittles

+0

Kein Problem. Irgendwelche dieser Ergebnisse unterscheiden sich viel von dem, was Sie hatten? – KCD

+0

Ja ... eine ganze Reihe von Änderungen. Starten Sie den Server neu, indem Sie sie verwenden.Wir müssen abwarten, was ein voller Produktionstag morgen bringt. Voll mit Crons und Kundendienstmitarbeitern, die he System benutzen. – Skittles