Bonjour,
Je me permets de poster pour avoir votre avis, après avoir essayé moult configurations, je commence à me poser des questions.
Je dispose d'un serveur dédié chez OVH, un Intel Core 2 Duo 2x 2.40 GHz avec 3Go de ram, de type LAMP ( apache2 en fastcgi, mysql 5.0.23 InnoDB, mod_security, eaccelerator.0.9.4)
Le serveur fait tourner une application PHP qui a recours a de nombreuses requêtes SQL, environ 400 req/s pour 300 utilisateurs en ligne.
Les 3/4 des tables sont en InnoDB, les autre sont en Myisam.
Le problème est que passé les 250 utilisateurs le serveur commence à ramer sérieusement. En effet, jatteind une charge honteuse de 18-20. Le probleme est l'utilisation CPU, elle est a 99%, Mysql en utilise les 3/4 le reste est utilisé par apache. L'utilisation de la ram me parait correcte, le serveur ne tire jamais dans le SWAP.
Hormis le fait de recoder entièrement l'application, y aurait t'il un moyen d'optimiser un peu sa configuration ?
Si joint les graphs MRTG et les configuraiton Mysql, apache , vous en pensez quoi ?
Merci d'avance pour vos réponse.
Teyla
** Configuration My.cnf **
// je passé les param de base skip-external-locking max_connections=200 connect_timeout=20 log-bin = /home/log/mysql/mysql-bin.log log-slow-queries = /home/log/mysql/slow_queries.log log-error = /home/log/mysql/error.log log_slow_queries log_long_format server-id = 1 #*** MyISAM Specific options key_buffer = 256M max_allowed_packet = 16M table_cache = 256 sort_buffer_size = 1M read_buffer_size = 1M read_rnd_buffer_size = 4M myisam_sort_buffer_size = 64M thread_cache_size = 8 thread_stack = 128k query_cache_size= 16M # *** BDB Specific options *** skip-bdb max_binlog_size = 104857600 # *** INNODB Specific options *** innodb_additional_mem_pool_size = 20M innodb_buffer_pool_size = 1G innodb_data_file_path = ibdata1:100M:autoextend innodb_data_home_dir = /usr/local/mysql/ibdata innodb_flush_log_at_trx_commit = 0 innodb_log_buffer_size = 32M innodb_log_file_size = 150M innodb_log_group_home_dir = /usr/local/mysql/iblogs innodb_lock_wait_timeout = 50 quick max_allowed_packet = 16M [mysql] no-auto-rehash [mysqlhotcopy] interactive-timeout
** Configuration Apache2.conf **
Timeout 300 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 15 <IfModule prefork.c> StartServers 25 MinSpareServers 15 MaxSpareServers 30 MaxClients 256 MaxRequestsPerChild 10000 </IfModule> <IfModule worker.c> StartServers 20 MaxClients 256 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 10000 </IfModule> <IfModule perchild.c> NumServers 5 StartThreads 5 MinSpareThreads 5 MaxSpareThreads 10 MaxThreadsPerChild 20 MaxRequestsPerChild 10000 AcceptMutex fcntl </IfModule>