Назад | Перейти на главную страницу

16 ядер, 12 ГБ ОЗУ, выделенная конфигурация MySql

У меня есть выделенный сервер 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;.

Я бы также предложил включить медленное ведение журнала запросов. После выявления проблемных запросов вы можете использовать ОБЪЯСНИТЕ , чтобы узнать, используют ли ваши запросы имеющиеся у вас индексы.

Если изолировать проблему от базы данных, по-прежнему остается много переменных. Первый шаг - выяснить, какие запросы выполняются медленно, и перейти к ним. Вы, вероятно, обнаружите, что улучшение запросов даст наибольшее улучшение по сравнению с любыми изменениями конфигурации на стороне сервера.