• User

    Ottimizzare e configurare Mysql per grande database InnoDB

    In questi giorni mi scervellavo a capire il perchè le pagine del mio sito caricavano lentamente e quindi mi sono messo a rivedere le migliaia di query e la configurazione di Mysql. Infine mi sono accorto che il problema non era nel database ma bensì altrove in quanto anche per aprire questa semplice pagina html [HTML]<html><head><head><body>ciao</body></html>[/HTML] il server rispondeva in 8 secondi. Sto risolvendo quel problema riconfigurando il server :crying:
    Comunque sia il mio database non è ottimizzato al meglio. Di seguito ecco cosa mi mostra in rosso PhpMyAdmin cliccando in Stato.```

    Slow_queries 146
    Innodb_buffer_pool_reads 24.9 k
    Innodb_row_lock_waits 2
    Handler_read_rnd 752.9 M
    Handler_read_rnd_next 3.8 G
    Qcache_lowmem_prunes 690.3 k
    Created_tmp_disk_tables 1.3 M
    Select_full_join 108.7 k
    Opened_tables 21.2 k
    Table_locks_waited 5

    
    Gli indici di alcune tabelle sono davvero alti specie dove ho più di 1 milione di righe.
      In PROCESSLIST l'id identificativo dell "utente" per il quale si sta eseguendo una query è davvero alto 341139. Precedentemente arrivava massimo a 1000 (credo riciclava le connessioni già esistenti).
      
    Sul server sono presenti molti database con diversi Motori. I più grandi hanno come motore InnoDB, gli altri MyISAM.
    Attualmente ho questa configurazione:
    
    

    max_connections = 400
    query_cache_size = 128M
    table_cache=2048
    tmp_table_size = 1G
    thread_cache_size=286
    connect_timeout = 100
    interactive_timeout = 100
    wait_timeout = 500
    query_cache_limit = 4M
    query_cache_size = 128M
    query_cache_type = 1
    open_files_limit = 8192
    max_allowed_packet = 16000M
    join_buffer_size = 16M
    max_heap_table_size = 1G
    key_cache_block_size = 1024
    max_sort_length = 1024
    key_cache_division_limit = 100
    skip-partition
    //MY ISAM
    myisam_max_sort_file_size=100G
    myisam_sort_buffer_size=2G
    key_buffer_size=64M
    read_buffer_size=256M
    read_rnd_buffer_size=256K
    sort_buffer_size=2G
    //INNO DB
    innodb_additional_mem_pool_size=32M
    innodb_flush_log_at_trx_commit = 2
    innodb_log_buffer_size=16M
    innodb_buffer_pool_size=6G
    innodb_log_file_size=1G
    innodb_thread_concurrency=17

    
     Il server dove gira l'ambaradam è questo (anche se lo stiamo per cambiare con uno migliore):
    
    
    

    Server Rack Dell R410
    CPU: 2 x Intel Xeon Quad L5609 4x core 1.86
    RAM: 16 GB
    HardDisk: 2 x 1 TB SATA a 7200 rpm
    OS: Windows Server 2008 Standard 64 Bit
    Connectivity: 100 Mbit/s

    
    > Il  server hosta un sito web che interroga un  database MYSQL INNODB  di 10gb (sempre in crescita), con 200 accessi simultanei  circa (spero cresceranno :D  ); ci gira anche un programma che aggiorna di continuo il database e   che sul server attuale consuma circa il 20%  della cpu con decine di  connessioni a webservice.  
    
    Qualche giorno fa ho provato ad ottimizzare il database con MySQLTuner ma penso di aver peggiorato la situazione. Avete qualche consiglio da darmi per ottimizzare la velocità di questo database?
    Spero mi possiate dare una mano :smile5:

  • User Attivo

    Se il problema è l'iowait del disco è consigliato un server con dischi SSD per la parte DB.
    Hai anche provato ad aggiornare mysql con una versione più aggiornata? Hanno fatto notevoli migliorie di performance su innodb da mysql 5.5


  • User

    Allora ho trovato il problema della lentezza e l'ho risolta -> giorgiotave .it/forum/hosting-housing-e-domini/221718-urgente-cambio-server-scelta-del-nuovo.html#post1128451

    Adesso è tornato tutto come era inizialmente! Ma vorrei comunque migliorare le impostazioni del db e evitare quegli avvisi in rosso. La versione di Mysql che è istallata è proprio la 5.5.
    Qualche suggerimento per abbassare questi valori??

    Slow_queries 146
    Innodb_buffer_pool_reads 24.9 k
    Innodb_row_lock_waits 2
    Handler_read_rnd 752.9 M
    Handler_read_rnd_next 3.8 G
    Qcache_lowmem_prunes 690.3 k
    Created_tmp_disk_tables 1.3 M
    Select_full_join 108.7 k
    Opened_tables 21.2 k
    Table_locks_waited 5


  • User Attivo

    Ciao,

    se separi il DB, prendi una macchina Linux e prova ad installare MySQL Percona


  • Super User

    Io suggerirei di installare MariaDB nella versione 10...


  • User

    Non ho tempo per cambiare database o provare nuove emozioni xD volevo solo qualche consiglio per migliorare la configurazione senza stravolgere nulla :fumato:


  • Super User

    Conosci MariaDB peppinosh?


  • User

    Ne conosco la storia ma non l'ho mai usato o testato


  • Super User

    Io lo uso e non c'è nessun test da fare... ho disinstallato Mysql e installato questo database e i server hanno ritrovato una seconda giovinezza...


  • User

    ho disinstallato Mysql e installato questo database

    Non ho questo tempo.. probabilmente poi ci saranno problemi di incompatibilità.. non posso rischiare per ora


  • Super User

    Il solo rischio che corri è di restare nella situazione attuale...
    MariaDb è un fork di Mysql, compatibilità totale e con caratteristiche che Mysql non ha.
    https://mariadb.com/kb/en/mariadb/mariadb-vs-mysql-features/

    Buon lavoro!