У меня есть выделенный сервер Mysql с 16 ядрами и 12 ГБ ОЗУ, который работает довольно плохо, так как я настраиваю его для сервера на 16 ГБ, и я думаю, это объясняет, почему в мире сайту теперь требуется более 500 секунд для отображения одной страницы. Я использую memcached для кеширования запросов и использую InnoDB в качестве движка базы данных.
#8 core/16GB config stolen from http://groups.drupal.org/node/28830
back_log = 50
max_connect_errors = 9999999
table_cache = 5000
binlog_cache_size = 1M
max_heap_table_size = 128M
sort_buffer_size = 500K
join_buffer_size = 500K
thread_cache_size = 100
thread_concurrency = 16
query_cache_size = 512M
query_cache_limit = 8M
query_cache_min_res_unit = 2K
thread_stack = 192K
tmp_table_size = 384M
long_query_time = 2
# *** INNODB Specific options ***
innodb_additional_mem_pool_size = 80M
innodb_buffer_pool_size = 12G
innodb_file_io_threads = 4
innodb_thread_concurrency = 16
innodb_log_buffer_size = 20M
innodb_log_file_size = 800M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = 1
Любая помощь по оптимизации конфигурации my.cnf или даже создание новой была бы очень признательна.
Единственный способ, при котором конфигурация для 16 ГБ в коробке 12 ГБ может стать проблемой, - это если MySQL пытается использовать больше ресурсов памяти, чем имеет система. Большинство серверов MySQL настроены на использование слишком большого количества памяти, но это не приводит к тому, что они плохо работают с первого дня. Если коробка не меняет местами и MySQL не убивает OOM, это не факт, что это конфигурация для коробки 16 ГБ на коробке 12 ГБ.
Если проблема связана с MySQL, вы можете начать с проверки списка процессов с помощью SHOW PROCESSLIST;
. Если это займет 500 секунд, вы обязательно увидите несколько зависающих запросов. Если выполняемые запросы усекаются, вы можете запустить SHOW FULL PROCESSLIST;
.
Я бы также предложил включить медленное ведение журнала запросов. После выявления проблемных запросов вы можете использовать ОБЪЯСНИТЕ , чтобы узнать, используют ли ваши запросы имеющиеся у вас индексы.
Если изолировать проблему от базы данных, по-прежнему остается много переменных. Первый шаг - выяснить, какие запросы выполняются медленно, и перейти к ним. Вы, вероятно, обнаружите, что улучшение запросов даст наибольшее улучшение по сравнению с любыми изменениями конфигурации на стороне сервера.