Зменшення кількості потоків MariaDB / MySQL


3

Тому я запускаю базу даних MariaDB 10 на одному ядерному сервері; не надто потужний, але тоді і мої потреби не величезні.

Однак одне, що я помітив, це те, що якщо я заглянув, у htopмене mysqlв списку видно близько 28 записів, що, на мою думку, це один процес плюс 27 потоків (оскільки htopза замовчуванням перераховані потоки, як процеси).

Однак це здається чималим, оскільки моя база даних налаштована на використання пулу потоків з обмеженням 8 потоків, а не на один потік на з'єднання за замовчуванням, і він навіть не використовує всі перераховані (на даний момент це два) , то для чого інші 25 ниток? Чи є спосіб я зменшити цю кількість?

Я знаю, що це не обов'язково проблема, однак у мене виникають нечасті повільні запити (> 0,5 секунди, а не звичайні <1 мс, оскільки більшість моїх запитів дуже прості), і здається, що занадто багато потоків може бути потенційним винуватцем, якщо занадто багато одразу прокидаються.

Чи нормальна ця кількість ниток? Чи є спосіб, який я можу ще більше зменшити, чи ці зайві нитки роблять щось важливе?

sudo grep thread /etc/mysql/my.cnf

thread_stack            = 256K
thread_cache_size       = 8
thread_handling         = pool-of-threads
thread_pool_max_threads = 8
thread_pool_stall_limit = 200

Будь ласка, опублікуйте вихід "sudo grep thread /etc/mysql/my.cnf"
Rui F Ribeiro


2
@RuiFRibeiro додав запитувані значення. @steve Я не впевнений, чи це дублікат, напевно є збіг, але я знаю про такі налаштування thread_cache_size, але, як я кажу, я бачу щонайменше 27 тем, що мені незрозуміло, враховуючи, що встановлено мій ліміт до восьми. Я можу зрозуміти, що MariaDB може мати кілька додаткових ниток для виконання інших завдань, але чи дійсно потрібно стільки? Чи є інші налаштування, від яких вони можуть бути керовані?
Харавік

2
Також хотів зазначити, що для MySQL на 28 записів у htopмене є лише значення 4 для Threadpool_threads(3 простої, 1 працює), тому я навіть не максимум, що я встановив, тому насправді є 23 або більше зайвих нитки.
Харавік

Не могли б ви сказати мені кількість "max_connections" у my.cnf?
Rui F Ribeiro

Відповіді:


2

Ці нитки служать різному призначенню. Є головна нитка, яка запускається і чекає до завершення роботи, є кілька фонових ниток в Innodb і Aria тощо.

Прикріпіть gdbі зробіть, thread apply all btщоб побачити, що вони роблять - швидше за все, вони сидять там, нічого не чекаючи, коли станеться якась подія.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.