Thoranix Posté 28 Décembre 2005 Posté 28 Décembre 2005 Bonsoir J'ai acheté récemment un serveur virtuel auprès de Nexlink et il est alloué 256 Mo de RAM. Tout était pré-installé (Apache, PHP 4, MySQL 3.23...) Il n'y a qu'un site qui utilise pas mal de connexions à la base de données. J'ai optimisé de manière assez importante les scripts PHP pour réduire les requêtes vers la base de données (nombre divisé par plus de 2) mais la mémoire occupée par chaque processus MySQL est toujours la même. Il y a constamment (jour et nuit, à toutes heures) 11 processus MySQL avec chacun 30 Mo de mémoire allouée (si ce sont bien des ko que donne la colonne RSS de la commande "ps aux"). 11*30 = 330 > 256 Mo donc je suppose qu'il swappe (la commande top n'est pas présente apparemment, distribution Fedora Core 2) Il y a une semaine, MySQL s'est mis subitement à ne consommer que 10 Mo sans raison apparente mais j'ai du redémarrer le serveur hier et... la situation est revenue à 30 Mo par processus. Je précise que le site tournait aussi vite avec 10 ou 30 Mo pour MySQL. Quelqu'un peut-il m'aider pour réduire le nombre de processus OU réduire la mémoire utilisée ? Je vous montre le résultat de la commande sql "show variables" (j'ai aussi modifié le fichier etc/my.cnf pour réduire le key-buffer etc... sans conséquence) Variable_name Valueback_log 50basedir /usr/bdb_cache_size 8388600bdb_log_buffer_size 32768bdb_home /var/lib/mysql/bdb_max_lock 10000bdb_logdir bdb_shared_data OFFbdb_tmpdir /tmp/bdb_version Sleepycat Software: Berkeley DB 3.2.9a: (September...binlog_cache_size 32768character_set latin1character_sets latin1 big5 cp1251 cp1257 croat czech danish dec8 ...concurrent_insert ONconnect_timeout 5datadir /var/lib/mysql/delay_key_write ONdelayed_insert_limit 100delayed_insert_timeout 300delayed_queue_size 1000flush OFFflush_time 0have_bdb YEShave_gemini NOhave_innodb YEShave_isam YEShave_raid NOhave_openssl NOinit_file innodb_additional_mem_pool_size 1048576innodb_buffer_pool_size 8388608innodb_data_file_path ibdata1:10M:autoextendinnodb_data_home_dir innodb_file_io_threads 4innodb_force_recovery 0innodb_thread_concurrency 8innodb_flush_log_at_trx_commit 1innodb_fast_shutdown ONinnodb_flush_method innodb_lock_wait_timeout 50innodb_log_arch_dir innodb_log_archive OFFinnodb_log_buffer_size 1048576innodb_log_file_size 5242880innodb_log_files_in_group 2innodb_log_group_home_dir ./innodb_mirrored_log_groups 1interactive_timeout 28800join_buffer_size 131072key_buffer_size 4190208language /usr/share/mysql/english/large_files_support ONlocked_in_memory OFFlog OFFlog_update OFFlog_bin OFFlog_slave_updates OFFlog_long_queries OFFlong_query_time 10low_priority_updates OFFlower_case_table_names 0max_allowed_packet 1048576max_binlog_cache_size 4294967295max_binlog_size 1073741824max_connections 100max_connect_errors 10max_delayed_threads 20max_heap_table_size 16777216max_join_size 4294967295max_sort_length 1024max_user_connections 0max_tmp_tables 32max_write_lock_count 4294967295myisam_max_extra_sort_file_size 256myisam_max_sort_file_size 2047myisam_recover_options 0myisam_sort_buffer_size 4194304net_buffer_length 16384net_read_timeout 30net_retry_count 10net_write_timeout 60open_files_limit 0pid_file /var/run/mysqld/mysqld.pidport 3306protocol_version 10record_buffer 131072record_rnd_buffer 131072query_buffer_size 0safe_show_database ONserver_id 0slave_net_timeout 3600skip_locking ONskip_networking OFFskip_show_database OFFslow_launch_time 2socket /var/lib/mysql/mysql.socksort_buffer 2097144sql_mode 0table_cache 64table_type MYISAMVariable_name Valuethread_cache_size 0thread_stack 65536transaction_isolation READ-COMMITTEDtimezone CETtmp_table_size 8388608tmpdir /tmp/version 3.23.58wait_timeout 28800 Je vous remercie
auricom Posté 29 Décembre 2005 Posté 29 Décembre 2005 Salut, Les paramètres suivants allouent la mémoire pour chaque connections: read_buffer_size read_rnd_buffer_size sort_buffer_size myisam_sort_buffer_size Si leur valeur est élevée, la consommation mémoire de mysql grimpe. Peut-être peux-tu nous donner leurs valeurs pour t'aider à ajuster tout ça ? Sinon, tu peux lancer la commande "free", qui va te donner l'état de ton swap. D'autre part 11 processes mysql... peut-être que tu peux voir du côté des paramètres thread_concurrency et thread_cache_size, ou alors tu as énormément de connections. Réduire le key-buffer size n'est pas forcément recommandé car c'est une zone mémoire partagée entre tous les threads mysql. @+
Thoranix Posté 29 Décembre 2005 Auteur Posté 29 Décembre 2005 J'ai justement fourni le résultat de "show variables" pour vous montrer toutes les valeurs. D'ailleurs les valeurs "read" ne sont pas disponibles pour MySQL 3.23. J'ai demandé à un ami d'installer MySQL 5 mais ca a échoué, on réessayera mais on n'a pas fixé de date encore. J'ai essayé de réduire les valeurs existantes que vous proposez mais ca semble légèrement ralentir l'affichage des pages sans pour autant réduire la mémoire allouée à chaque processus. Fait "troublant", lorsque j'arrête Apache (il n'y a plus personne sur le site donc) et MySQL (plus de processus MySQL) et que je ne relance que MySQL, la situation de MySQL est quasiment identique (à 2-3 Mo près) à celle après plusieurs jours de fonctionnement : 11 processus. Quant à la commande "free", elle semble retourner le swap de la machine elle-même (à moins que je n'utilise 7.32 Go ) et donc la somme de tous les serveurs virtuels installés.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant