Тонка настройка mysql, про все потроху

Joomla, як і більшість PHP-додатків, передбачає відчутну навантаження на MySQL, який використовується для зберігання даних. У пошуках підвищення продуктивності, багато користувачів починають з виконуваних запитів, які прискорюють шляхом індексування. Нерідко, багато на цьому задоволено зупиняються. Але якщо у вас є виділений сервер (або віртуальний), то вам випала щаслива нагода для настройки MySQL щодо ВАШОЇ навантаження.

Перед тим, як почати ..

Перше, що треба зробити - резервну копію всього сервера. Особливо - баз даних MySQL і my.cnf. Спочатку вам слід з'ясувати, скільки оперативної пам'яті ви можете використовувати. Але зараз мене абсолютно не хвилює кількість оперативної пам'яті вашого сервера. Я маю на увазі кількість вільної пам'яті. Очевидно ви думаєте, що чим більше оперативної пам'яті, тим більше її залишиться вільною (але це не завжди так. У мене є сервер з 2 Гб оперативної пам'яті, але вільної всього близько 2 мегабайт ...). Найпростіший шлях побачити вільну пам'ять, запустити просту команду «free -m». З'явиться велика кількість корисної інформації. Але нас цікавить тільки другий рядок (що починається з «Mem:») і четверта колонка ( «free»). Якраз тут ми бачимо ту кількість мегабайт оперативної пам'яті, яке вільно.

Тепер подивіться скільки мегабайт оперативної пам'яті у вас вільно. Запам'ятайте його (дуже стане в нагоді трохи пізніше). Тепер запустіть команду "top -d 1 -n 2 -u mysql" (замість mysql вкажіть користувача, під яким у вас запущений сервер MySQL).

Нас цікавить значення колонки "VIRT", в якій вказується кількість оперативної пам'яті, використовуваної MySQL в даний момент ... Додайте її до вільної пам'яті, про яку говорилося раніше, і будемо з ним працювати ...

Перевіряйте ці значення час від часу. Надалі вам може знадобитися помістити що-небудь в файл підкачки.

Перевіряємо свій файл my.cnf

ВАЖЛИВО! ЗРОБІТЬ НЕГАЙНО резервну копію файлу my.cnf перед тим, як що-небудь змінити. Ви можете знайти свій my.cnf (на Linux) в директорії / etc. Перед тим, як ми почнемо щось змінювати, нам слід знати з чого почати. Нижче наведено конфігураційний файл з настройками за замовчуванням. Ваш може трохи відрізнятися, але він все одно буде відправною точкою.

Зауважте, що нижче ніяких змінних немає (якщо у вас вони є, нічого страшного. Ви можете просто видалити їх, але не видаляйте нічого, що пов'язано з сполуками, тайм-аутами або open_files_limit). І так, не забули кількість пам'яті? Тепер скористаємося цим числом нижче. Додайте відповідні параметри в файл my.cnf, розділ [mysqld] (замініть відсотки на еквівалентну значення оперативної пам'яті, про яку говорилося вище).

Зверніть увагу, що ми використовували тільки 86% вільної пам'яті плюс близько 10 мегабайт. Це важливо, тому що ми не хочемо використовувати багато пам'яті. Тепер перезавантажте MySQL і нехай він попрацює кілька днів у своєму звичайному режимі (або якщо це тестовий сервер, симулює ВЕЛИКУ навантаження мережевого трафіку). Також зберіть повторно інформацію про використання оперативної пам'яті.

Забавна частина.

Перший розділ - мережевий трафік сервера. Тут докладно описується кількість запитів, надісланих на сервер (і кількість з'єднань). Наступний розділ - статистика запитів. Це звичайний список кількості запитів за типами. Далі йде вже більше цікавить нас. Три колонки ( «Мінлива», «Значення» і «Опис»). Зверніть увагу, що всі неправильні і невідповідні значення мають червоний колір. Це дуже важливо.

Як визначити, що потрібно зробити.

До цього ми з вами працювали з настройками сервера і ігнорували такі змінні (що відносяться до ефективності запитів): slow_queries, всі змінні з префіксом handler_ і всі змінні починаються на select_. Почнемо з Key Cache ( «Кеш індексу»). Цей розділ знаходиться практично в самому низу. Показник параметра Key_read s повинен бути НА БАГАТО менше (майже в 1000 разів) ніж Key_read_requests. Якщо це не так, значить вам слід збільшити key_buffer_size. Почніть зі значення, рівне в процентному співвідношенні як 25% і подивіться як це все працює. Або якщо ваш key_buffer_size дуже великий, щодо key_blocks_ unused і key_blocks_used. Вам буде потрібно додатковий дисковий простір (ще 10%). Запам'ятайте, не робіть це значення дуже великим, інакше ваш сервер ризикує розпочати використовувати файл підкачки. Перезавантажувати MySQL ще рано, слід подивитися ще кілька областей.

Наступна велика область - Tables ( «Таблиці»). Порівняйте змінні Open_tables і Opened_tables. Якщо значення їх практично однакові, все нормально. Якщо opened_tables на багато більше, ніж open_table (раз в 10), тоді вам слід підкоригувати значення змінної table_cache. Не забуваємо, що ми збільшуємо значення, тому збільште до 25%. Після цього подивіться на Query Cach e ( «Кеш запитів»). Зверніть увагу на Qcache_free_memory. Там повинно бути велике значення (кілька мегабайт). Далі, значення Qcache_lowmem_prunes має бути максимально наближене до 0 або взагалі дорівнювати 0. Для цього збільшуйте query_cache_size. Наступним кроком буде перевірка значення created_tmp_files. Якщо воно не маленьке, то збільшуйте tmp_table_size.

повторна перевірка

Тепер перезавантажте сервер. Нехай він попрацює кілька днів (регулярно перевіряйте завантаження пам'яті за допомогою команди free -m) і потім пройдіться по налаштувань ще раз. Коли все описується тут буде досягнуто, ви домоглися свого! І вам буде потрібно тільки час від часу дивитися на зміни в навантаженні сервера і базах даних.

Схожі статті