Tente aumentar o innodb_buffer_pool_size (para 512M) e o tamanho do cache de consulta (query_cache_type = 1 e query_cache_size = 256M).
Algumas recomendações gerais e simples: link
Estou usando o Centos 6 64bit em vps com ram de 4GB. 1 site wordpress e 2 sites de script de papéis de parede. Wordrpess tem 10k visitas diárias. O site está lento.
My.cnf
# Example mysql config file for large systems. # # This is for large system with memory = 512M where the system runs mainly # MySQL. # # You can copy this file to # /etc/my.cnf to set global options, # mysql-data-dir/my.cnf to set server-specific options (in this # installation this directory is /usr/local/mysql/var) or # ~/.my.cnf to set user-specific options. # # One can in this file use all long options that the program supports. # If you want to know which options a program support, run the program # with --help option. # The following options will be passed to all MySQL clients [client] #password = your_password port = 3306 socket = /tmp/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld] port = 3306 socket = /tmp/mysql.sock skip-locking set-variable = key_buffer=256M set-variable = max_allowed_packet=1M set-variable = table_cache=256 set-variable = sort_buffer=1M set-variable = record_buffer=1M set-variable = myisam_sort_buffer_size=64M set-variable = thread_cache=8 # Try number of CPU's*2 for thread_concurrency set-variable = thread_concurrency=8 log-bin server-id = 1 # Uncomment the following if you are using BDB tables #set-variable = bdb_cache_size=64M #set-variable = bdb_max_lock=100000 # Uncomment the following if you are using InnoDB tables #innodb_data_home_dir = /usr/local/mysql/var/ #innodb_data_file_path = ibdata1:10M:autoextend #innodb_log_group_home_dir = /usr/local/mysql/var/ #innodb_log_arch_dir = /usr/local/mysql/var/ # You can set .._buffer_pool_size up to 50 - 80 % # of RAM but beware of setting memory usage too high #set-variable = innodb_buffer_pool_size=256M #set-variable = innodb_additional_mem_pool_size=20M # Set .._log_file_size to 25 % of buffer pool size #set-variable = innodb_log_file_size=64M #set-variable = innodb_log_buffer_size=8M #innodb_flush_log_at_trx_commit=1 #set-variable = innodb_lock_wait_timeout=50 # Point the following paths to different dedicated disks #tmpdir = /tmp/ #log-update = /path-to-dedicated-directory/hostname [mysqldump] quick set-variable = max_allowed_packet=16M [mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates [isamchk] set-variable = key_buffer=128M set-variable = sort_buffer=128M set-variable = read_buffer=2M set-variable = write_buffer=2M [myisamchk] set-variable = key_buffer=128M set-variable = sort_buffer=128M set-variable = read_buffer=2M set-variable = write_buffer=2M [mysqlhotcopy] interactive-timeout
Isso é ./mysqltuner.pl
-------- General Statistics -------------------------------------------------- [--] Skipped version check for MySQLTuner script [OK] Currently running supported MySQL version 5.5.27-log [OK] Operating on 64-bit architecture -------- Storage Engine Statistics ------------------------------------------- [--] Status: +Archive -BDB -Federated +InnoDB -ISAM -NDBCluster [--] Data in MyISAM tables: 16M (Tables: 61) [--] Data in InnoDB tables: 4M (Tables: 34) [--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17) [!!] Total fragmented tables: 34 -------- Security Recommendations ------------------------------------------- [OK] All database users have passwords assigned -------- Performance Metrics ------------------------------------------------- [--] Up for: 9m 53s (40K q [68.862 qps], 3K conn, TX: 203M, RX: 4M) [--] Reads / Writes: 83% / 17% [--] Total buffers: 432.0M global + 6.4M per thread (151 max threads) [OK] Maximum possible memory usage: 1.4G (36% of installed RAM) [OK] Slow queries: 0% (0/40K) [OK] Highest usage of available connections: 74% (113/151) [OK] Key buffer size / total MyISAM indexes: 256.0M/10.1M [OK] Key buffer hit rate: 97.9% (152K cached / 3K reads) [OK] Query cache efficiency: 62.0% (17K cached / 27K selects) [OK] Query cache prunes per day: 0 [OK] Sorts requiring temporary tables: 0% (0 temp sorts / 224 sorts) [OK] Temporary tables created on disk: 25% (71 on disk / 277 total) [OK] Thread cache hit rate: 77% (831 created / 3K connections) [OK] Table cache hit rate: 39% (135 open / 342 opened) [OK] Open file limit used: 15% (162/1K) [OK] Table locks acquired immediately: 98% (13K immediate / 13K locks) [OK] InnoDB data size / buffer pool: 4.5M/128.0M -------- Recommendations ----------------------------------------------------- General recommendations: Run OPTIMIZE TABLE to defragment tables for better performance MySQL started within last 24 hours - recommendations may be inaccurate Enable the slow query log to troubleshoot bad queries
Tente aumentar o innodb_buffer_pool_size (para 512M) e o tamanho do cache de consulta (query_cache_type = 1 e query_cache_size = 256M).
Algumas recomendações gerais e simples: link
Tente instalar um plugin de cache para a sua instalação do WordPress. Eu pessoalmente recomendo W3 Super Cache:
Você também pode instalar o XCache e configurar o PHP como FCGI para obter melhor armazenamento em cache (o WP Super Cache funciona com o XCache e também com o standalone).
Percona tem um assistente de configuração bastante decente, que cuspirá um arquivo my.cnf estreitamente ajustado ao seu servidor e carga de trabalho: link
Ele não fornece uma configuração perfeita, mas você pode comparar com o que está executando no momento e ver por que eles selecionaram determinadas configurações.
Por que o mysql é um gargalo? Im pretty shure php é o problema aqui, já que eu gerencio muitos sites de magento com mais visitas do que 10k / dia.
O Wp é 100% compatível com o php7, então comece a partir daí. Faça isso em um ambiente de desenvolvimento primeiro e depois ao vivo. Também um plugin de cacheing é um bom impulso, eu sugiro que o cache de redis seja super rápido. O próximo passo seria mover o mysql / mariadb para outro vm. Desde que você está bombeando meu.cnf você está roubando cpu / ram para php assim 1 vm para php e um para o mysql deve ajudar muito