Настройка Mysql сервера на VDS(VPS) для оптимального потребления памяти

Сервера, хостинг, 09 Марта 2012

Настройка Mysql сервера на VDS(VPS) для оптимального потребления памяти

В контексте предыдущей статьи, а также продолжая тему необходимой конфигурации VDS(VPS)сервера очень важно затронуть вопрос настройки Mysql сервера. Потому что, в случае, если у вас немного проектов и тем более посещаемость которых составляет в часы пик буквально несколько обращений в секунду, то, чтобы памяти хватало и сервер работал стабильно важно настроить Mysql сервер на менее требовательные к памяти параметра, это приведет к тому, что сервер базы данных будет работать не самым лучшим и самым быстро действенным образом, однако будет достаточно памяти для выполнения других и новых процессов. При этом не надо сбрасывать со счетов тот факт, что по умолчанию сервер Mysql по умолчанию настроен на достаточно высокие параметры потребления ресурсов, которые фактически не требуются вашему проекту, поэтому при правильной настройке вы не потеряете скорость, а наоборот приобретете стабильность.


Итак, здесь прежде всего важно сколько памяти ОЗУ вы имеете на своем сервере и какова текущая нагрузка на все проекты на данном сервере в часы пик. Для стандартных проектов, вэб сайтов, таких как информационные сайты, блоги с посещаемостью до 1000 уникальных посетителей в сутки с пиковой нагрузкой 1-2 обращения в секунду вполне будет достаточно VDS(VPS) сервера с 512 мегабайтами памяти, который оснащен xCashe, Memcached, Suhosin, которые также потребляют память, ну и панель управления хостингом, такая как Kloxo или DirectAdmin. При таком подходе можно настроить Mysql сервером исходя из определенных основных параметров. Как известно сервер Mysql создает для каждого подключения потоки, которые потребляют память, выделяя ее по определенным параметрам настроек. Для вашего типа нагрузки и памяти необходимы следующие настройки в файле my.cnf, который находится на сервере в /etc/my.cnf:


key_buffer_size = 96M


max_allowed_packet = 4M


table_cache = 96


sort_buffer_size = 128K


read_buffer_size = 128K


read_rnd_buffer_size = 512K


net_buffer_length = 16K


myisam_sort_buffer_size = 16M


query_cache_size = 32M


query_cache_limit = 1M


query_cache_min_res_unit = 4K


thread_concurrency = 2


thread_cache_size = 16


tmp_table_size = 64M


max_heap_table_size = 64M


Причем здесь стоит отметить такие параметры как sort_buffer_size и read_buffer_size, которые выделяются на каждый отдельный поток и по некоторым тестам специалистов утверждается, что завышение данных параметров приводит к увеличению времени выполнения запросов. В нашем случае можно дополнительно варьировать key_buffer_size, table_cache, tmp_table_size и max_heap_table_size. Если у проекта много таблиц с индексами, то рекомендуется небольшими порциями увеличивать значение key_buffer_size и table_cache, например с шагом 4 и анализировать результаты с помощью мониторинга нагрузки и потребления памяти в часы пик, дабы памяти никогда не было 0 и был небольшой запас более 60 мегабайт. При дополнительном наличии памяти можно увеличивать также tmp_table_size и max_heap_table_size также с шагом по 4M. Обращаю внимание, что данные параметры всегда надо увеличивать одновременно так, чтобы они были всегда равны друг другу.


Данными настройками можно воспользоваться как отправной точкой при расчете параметров для вашего количества памяти. При этом рекомендуется не увеличивать значения sort_buffer_size и read_buffer_size более, чем в 512K, а лучше вообще для себя всегда помнить, что наиболее оптимальное значение это 256K, потому что не нужно, что бы на небольшие потоки с небольшими запросами выделялось по 4-8 мегабайт памяти для данных типов буфера. При большем количестве памяти обязательно увеличивайте значения query_cache_size, а значение query_cache_limit увеличивайте до 2M, чтобы больше запросов попадало в кэш, объемом query_cache_size, выделенный вами. Также при наличии большей памяти чем 512 стартовых, незначительно можно увеличивать thread_cache_size, количество кешируемых потоков.


 

На данный момент нет комментариев
Внеси свой вклад в осбуждение
Имя*
Почта*
не публикуется
Ваш сайт
например, http://site
Сообщение*
Код подтверждения*
Код подтверждения

1. Обязательно укажите код подтверждения

2. Все сообщения проходят модерацию перед размещением на сайте

3. Размещение ссылок в сообщении не допускается