Mysql utilizzo di memory elevata e utilizzo di swap

Ho un database da 1,6 GB che aggiunge circa 200 MB di size each mese. Ho una RAM da 12 GB (condivisa con apache, mysql e os), mysql usa sempre il swap che ho bisogno di riavviare il servizio una volta raggiunto il limite dello spazio di swap. L'utilizzo tipico della memory del process mysql è di 3,5 GB e aumenta a 4,5 GB quando c'è un sacco di attività sul mio server web.

  1. Come posso evitare il mysql utilizzando il swap?
  2. L'uso della memory di process di mysql da 3,5 GB per una dimensione del database da 1,6 GB è normale?
  3. Il mio config mysql sembra questo, sono la mia configuration ottimizzare?
[mysqld] innodb_file_per_table datadir=/var/lib/mysql tmpdir=/var/lib/mysqltmp socket=/var/lib/mysql/mysql.sock skip-locking skip-name-resolve table_cache=3072 thread_cache_size=16 back_log=100 max_connect_errors=10000 open-files-limit=20000 interactive_timeout=30 wait_timeout=40 max_connections=100 skip-name-resolve max_allowed_packet=16M tmp_table_size=1768M max_heap_table_size=1768M query_cache_size=64M sort_buffer_size=1M read_buffer_size=1M read_rnd_buffer_size=8M join_buffer_size=32M key_buffer_size=64M myisam_sort_buffer_size=64M innodb_log_file_size=100M innodb_buffer_pool_size=1512M 

  • Come posso consentire le connessioni in output tramite iptables?
  • La query locale di NTP si estende sempre
  • Ottieni la distro e la versione dei server
  • C'è un modo per build rpm e deb sullo stesso sistema
  • yumdownloader scarica solo i686 risolti rpms
  • Impostare RHEL / CentOS 5 per utilizzare SUDO in row di command e X
  • Come faccio a diffondere due server Redhat Linux?
  • Quale è l'equivalente per "start service_name" che Fedora / RHEL / CentOS utilizza per Debian / Ubuntu?
  • One Solution collect form web for “Mysql utilizzo di memory elevata e utilizzo di swap”

    Molto probabilmente colpevoli sono queste impostazioni:

     tmp_table_size=1768M max_heap_table_size=1768M 

    Ciò significa che each singola tabella temporanea creata da una query sul tuo sito web potrebbe richiedere fino a 1768 megabyte di memory, o 1,7 GB.

    Li diminuirei a 64M. Ciò diminuirà l'utilizzo della memory, ma potrebbe anche causare MySQL a scrivere dati temporanei delle tabelle per le query su disco, cosa che potrebbe rallentare le cose.

    Se MySQL utilizza molto il disco per le tabelle temporanee, è necessario analizzare l'applicazione e scoprire where sono le query che generano grandi tabelle temporanee e quindi rifatturare il codice in modo che non siano necessarie grandi tabelle temporanee.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.