MySQL mon.cnf de réglage des performances de recommandations

Je suis un peu en espérant que quelqu'un pourrait être en mesure d'offrir de l'aide à l'optimisation d'un mon.cnf de fichier pour un volume extrêmement élevé mysql serveur de base de données.

Our architecture is as follows:

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

Notre application web est utilisé par environ 300 clients simultanément. Nous avons besoin de notre mon.cnf à l'écoute pour donner le meilleur rendement possible pour cette infrastructure.

Je suis pleinement conscient que les index et les requêtes optimisées sont un facteur majeur dans le présent, mais nous aimerions commencer avec un système qui est configuré correctement, puis un suivi systématique de la ré-ingénierie de nos requêtes en conséquence.

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

Des suggestions?
Merci les gens.

Édition par RolandoMySQLDBA

Puisque toutes les données vous est MyISAM, s'il vous plaît exécuter cette requête et de montrer la sortie

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 - Merci...les résultats de cette requête a été 4G.

  • rencontrez-vous spécifiques lenteur fonction de vos paramètres actuels?
  • C'est une assez bonne machine pour seulement 300 utilisateurs du web, d'autant plus si c'est juste un serveur de base de données.. Est-ce Windows ou Linux? De toute façon, en général, je recommande d'avoir des Disques séparés/Lun pour le système d'exploitation/Swap et le volume de Données (où datadir réside). Rester à l'écart du raid logiciel, etc. Il existe un outil appelé "mk-requête-conseiller" qui pourrait vous aider à régler ce type de configuration. À moins que votre 'front-end' application est en train de faire la "bonne chose" (la mise en cache de données statiques, seule interrogation lorsque nécessaire, etc), tuning pourraient ne pas acheter de vous.
  • Vous pouvez également ajouter un script de maintenance (après une sauvegarde, bien sûr) qui appelle les 'OPTIMIZE TABLE nom_table' chaque semaine pour aider à garder les choses optimisé. Également à la recherche dans le partitionnement des tables de grande taille, etc.
  • J'aimerais vérifier les Journaux de Requêtes trop. Si vous avez 300 simultanée des utilisateurs du web qui causent de nombreux types de " SÉLECTIONNER [quelques données génériques] à partir de [grande table de recherche]'; c'est une optimisation (mise en cache de données) pour le front-end web app pour. Juste sayin' 😉
  • Le système est une machine virtuelle linux. La lenteur nous semblent être l'expérience est, en partie, en raison de certaines vraiment mal conçu requêtes de l'auteur par un tiers. Deuxièmement, le serveur web (aussi linux) les liens à ce serveur via php connexions. Nous avons max suite de nos connexions sur un couple d'instances d'aujourd'hui et lors de l'exécution de requêtes avec des jointures, il a tendance à inhiber les clients d'être en mesure d'effectuer normal des opérations sur le web. Nous avons été en cours d'exécution ce serveur mysql sur le serveur web, qui est de 32 bits.
InformationsquelleAutor Skittles | 2012-06-05