Оптимизация сервера MySql. Шаг первый. Утилита mysqltuner.

Так повелось, что в мире хостинга ,  самой популярной базой данных, де факто стала база mysql. Простота установки , бесплатность, а главное, высокая скорость работы,  сделали ее одной из наиболее часто используемых баз данных в мире хостинга.  Она может многое, работает быстро, но, без должной изначальной настройки может стать очень узким местом. А отсюда может тянуться и медленная загрузка страниц сайта, и ошибки на страницах вида "Too many active connections".

После установки mysql на выделенный сервер, изначально его файл конфигурации размещается в  /etc/my.cnf  и выглядит весьма скромно.  В такой конфигурации работать то он будет, но про какую-либо оптимальную работу говорить не приходиться. Вот и попробуем немного улучшить наши настройки сервера mysql, для его более оптимальной работы. Первым делом нам необходимо взять более менее нормальный конфигурационный файл my.cnf, более подходящий для нашего сервера. А найти его можно в /usr/share/mysql. Там есть четыре необходимых нам файлика: my-small.cnf, my-medium.cnf, my-large.cnf и my-huge.cnf.  Выбираем под наш сервер, нашу память, наши запросы наиболее подходящий файл.  my-small.cnf - конфигурация для систем с обьемом памяти менее 64Mb, где mysql используется время от времени. Это не для нас. medium.cnf - чуть лучше, под mysql может выделяться до 64Мb памяти. В общем то это тоже обычно не для нас, разве что очень маломощные VDS, VPS. my-large.cnf - уже посерьезнее,  для систем с оперативной памятью от 512Мb. my-huge.cnf - для систем  с оперативной памятью 1-2Gb.  Выбираем одну из наиболее подходящих нам конфигураций и переписываем ее вместо текущей my.cnf . Например:

 cp /usr/share/mysql/my-large.cnf  /etc/my.cnf

После чего делаем рестарт сервера.

service mysqld restart

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

 

Одной из таких утилит, которая может помочь в выявлении проблемных мест конфигурации сервера mysql, является утилита mysqltuner. Утилита представляет собой скрипт написанный на языке perl. Инсталляции не требует. Его просто нужно скачать  

 wget http://mysqltuner.pl/

 и запустить 

perl mysqltuner.pl

Скрипт попросит имя и пароль MySQL администратора, после чего выведет результаты своей работы.  Вывод результатов работы утилиты примерно такой:

 [root@host 1]# perl mysqltuner.pl

 
 >>  MySQLTuner 1.0.1 - Major Hayden <major@mhtx.net>
 >>  Bug reports, feature requests, and downloads at http://mysqltuner.com/
 >>  Run with '--help' for additional options and output filtering
Please enter your MySQL administrative login: root
Please enter your MySQL administrative password:
 
-------- General Statistics --------------------------------------------------
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.0.82sp1-log
[!!] Switch to 64-bit OS - MySQL cannot currently use all of your RAM
 
-------- Storage Engine Statistics -------------------------------------------
[--] Status: -Archive +BDB -Federated +InnoDB -ISAM -NDBCluster
[--] Data in MyISAM tables: 19M (Tables: 90)
[!!] InnoDB is enabled but isn't being used
[!!] BDB is enabled but isn't being used
[!!] Total fragmented tables: 18
 
-------- Performance Metrics -------------------------------------------------
[--] Up for: 16m 37s (6K q [6.059 qps], 146 conn, TX: 54M, RX: 665K)
[--] Reads / Writes: 62% / 38%
[--] Total buffers: 298.0M global + 6.3M per thread (100 max threads)
[OK] Maximum possible memory usage: 929.2M (26% of installed RAM)
[OK] Slow queries: 0% (0/6K)
[OK] Highest usage of available connections: 5% (5/100)
[OK] Key buffer size / total MyISAM indexes: 256.0M/2.3M
[!!] Key buffer hit rate: 91.3% (1K cached / 101 reads)
[OK] Query cache efficiency: 97.6% (5K cached / 5K selects)
[OK] Query cache prunes per day: 0
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 8 sorts)
[OK] Temporary tables created on disk: 5% (1 on disk / 17 total)
[OK] Thread cache hit rate: 96% (5 created / 146 connections)
[OK] Table cache hit rate: 95% (115 open / 121 opened)
[OK] Open file limit used: 21% (222/1K)
[OK] Table locks acquired immediately: 100% (286 immediate / 286 locks)
 
-------- Recommendations -----------------------------------------------------
General recommendations:
    Add skip-innodb to MySQL configuration to disable InnoDB
    Add skip-bdb to MySQL configuration to disable BDB
    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
В первую очередь, на мой взгляд, стоит обратить внимание на  строку  
Highest usage of available connections: 5% (5/100) 
Количество текущих соединений - 5, количество возможных соединений - 100. Параметр 100 - это параметр использующийся по умолчанию. Обычно этого значения маловато, именно из-за него появляются сообщения вида  "Too many active connections". Увеличим этот параметр до 300. Открываем файл /etc/my.cnf в любимом редакторе и в секции  [mysqld] добавляем строчку   
max_connections = 300 
Сохраняемся, выходим и перегружаем сервер mysql.  Повторно запустив mysqltuner увидим соответствующие изменения в выводе. 
 
Еще одним, наиболее важным параметром увеличения производительности mysql является key_buffer_size.  Параметр определяет размер общего для всех пользовательских процессов  буфера индексных блоков MyISAM таблиц. Обычно устанавливается в пределах 30-40% от общей выделенной под Mysql оперативной памяти.  
 
Следует помнить, что рекомендации утилиты mysqltuner будут тем более оптимальны, чем дольше работает без перезагрузок сервер mysql. Скажем так: минимальный интервал в общем то должен составлять не менее 24 часов, о чем и предупреждает утилита после своего запуска.
 
Вкратце рассказал про первые шаги на поприще  оптимизации работы базы данных mysql. Очень подробную информацию практически по каждому параметру в конфиге my.cnf можно найти вот тут. Единственный минус - ресурс англоязычный, но при необходимости, я думаю, разобраться можно. 
Удачи всем в деле оптимизации mysql и быстрых вам SELECT-ов. :-) 
 
 

 

Обратите внимание на "6.3M

Обратите внимание на "6.3M per thread (100 max threads)". Увеличив количество max_connections в 3 раза, у вас сильно увеличиться использование оперативной памяти, вплоть до неприличного. Поэтому не стоит ставить max_connections про запас. Посмотрите свои текущие метрики, сколько коннектов в пике бывает. Прибавьте процентов 10-20 и нормально.

"< do { echo $i. php $i =

"< do { echo $i. php $i = 0;

Извлекли обширный популярность повести В. Шефнера "Сестренка грусти" и "Дворец на троих, или Признание холостяка". Он автор семи обыденных томов. Начиная с 1952 года В. Шефнер вращается к прозе.

Дон Жуан умеет жениться, оставаясь при этом Дон Жуаном; За исключением личных шоу объясняющегося о качественных характеристиках родов, сходные обширные теории референции, кажется, не помещают никакими концептуальными оружием, какие умели бы эксплицировать различие между референциальными свойствами употребленных родовых терминов "золото", "искусство" и "клоун". Шер Правитель не умеет прекратиться быть тигром, не прекратив при этом бытовать в качестве Шер Правителя. Спрос будет скорее состоять в том, представляют ли термины "искусство" и "шут" фамильными — другими обещаниями, представляет ли Петрушка шутом тем же способом, что Шер Правитель тигром, или тем же способом, что Дон Жуан холостяком? "Чем будет в ударенном эпизоде отличаться применение сих обозначений?

Верующий в Него не судится, а

Верующий в Него не судится, а не верующий уже обречен, потому что не уверовал во имя Сынишку Божия.7 Христианское учение о удовольствии Несмотря на собственную сравнительную непродолжительность — всего три года, проповедническая деятельность Христа произвела натуральный переворот в миросозерцании многих людей, в философии и, конечно же, в шоу о человеке. В Евангелии от Иоанна записаны удивительно умилительные слова: Ибо так возлюбил Создатель универсум, что сдал Сынишку собственного единородного, дабы разнообразный верующий в Него не погиб, но владел жизнь бессрочную. Первостепенное содержание Собственного учения Он сообщил в знаменитейшей Нагорной проповеди ( Евангелие от Матфея, луковицы 5 - 7 ). Ибо не прислал Создатель Сынишку Собственного в универсум, чтобы осуждать универсум, но чтобы универсум был эвакуирован через Него. Создатель во Христе примирил с Собою универсум, не вменяя публикам правонарушений их, и ударил нам обещание примирения.6 Создатель из-за громадной слабости к человечеству лишил поступиться жизнью своего единственного Сына для решения стоящей задачи.

Спасибо! :)

Спасибо! Smile

Ответить на комментарий Оптимизация сервера MySql. Шаг первый.

Скиньте сылку плиз на скачку

Странная ссылка, но это именно так.

(без учета НДС). Подобным

(без учета НДС). Подобным типом, рекламные затраты принимаются в мишенях налогообложения прибыли в сумме действительно урожденных расходов ( ( 7 000 000 руб. х 1% = 70 000 руб. Выручка от реализации продукции за первоначальное полугодие 2005 г. собрала 7 000 000 руб. > 60 000 руб.

In the summer season the vehicles are used to collect garbage and dust. Equipment for the treatment of land amelioration systems, loading and digging was obtained. The vehicles remove snow from runway, taxiways and apron areas and provide anti-icing of surfaces.