Я использую Centos 6 64bit на vps с оперативной памятью 4 ГБ. 1 сайт на wordpress и 2 сайта со сценариями обоев. Wordrpess посещают 10 тысяч ежедневно. Сайт работает медленно.
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
Это ./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
Попробуйте увеличить как innodb_buffer_pool_size (до 512 МБ), так и размер кеша запросов (query_cache_type = 1 и query_cache_size = 256M).
Несколько простых общих рекомендаций: http://www.ilsistemista.net/index.php/linux-a-unix/26-mysql-performance-tuning.html?limitstart=0
Почему вы думаете, что mysql является узким местом? Я уверен, что проблема здесь в php, так как я управляю множеством веб-сайтов Magento с более чем 10 тысячами посещений в день.
Wp на 100% совместим с php7, так что начните с этого. Сделайте это сначала в среде разработки, а затем вживую. Также плагин кеширования является хорошим стимулом, я предлагаю redis кешировать просто супер быстро. Следующим шагом будет перемещение mysql / mariadb на другую виртуальную машину. Поскольку вы накачиваете my.cnf, вы воруете cpu / ram на php, поэтому 1 vm для php и один для mysql должны сильно помочь
У Percona есть довольно приличный мастер настройки, который выдаст файл my.cnf, тесно связанный с вашим сервером и рабочей нагрузкой: https://tools.percona.com/wizard
Это не даст вам идеальной конфигурации, но вы можете сравнить с тем, что вы сейчас используете, и понять, почему они выбрали определенные настройки.
Попробуйте установить плагин кеширования для вашей установки WordPress. Я лично рекомендую W3 Super Cache:
http://wordpress.org/extend/plugins/wp-super-cache/
Вы также можете установить XCache и настроить PHP как FCGI, чтобы улучшить кеширование (WP Super Cache работает с XCache, а также автономно).