Система пула потоков и переменные состояния
В этой статье описываются система и переменные состояния, используемые пулом потоков MariaDB. Для получения полного описания см. Пул потоков в MariaDB.
Переменные системы
extra_max_connections
-
Описание: Количество подключений к
extra_port.- Для получения дополнительной информации см. Пул потоков в MariaDB: Настройка дополнительного порта.
-
Командная строка:
--extra-max-connections=# - Область: Глобальная
- Динамическая: Да
-
Тип данных:
numeric -
Значение по умолчанию:
1 -
Диапазон:
1до100000
extra_port
-
Описание: Дополнительный номер порта для использования TCP-соединений в
one-thread-per-connectionрежиме. Если установлено значение0, дополнительный порт не используется.- Для получения дополнительной информации см. Пул потоков в MariaDB: Настройка дополнительного порта.
-
Командная строка:
--extra-port=# - Область: Глобальная
- Динамическая: Нет
-
Тип данных:
numeric -
Значение по умолчанию:
0
thread_handling
-
Описание: Определяет, как сервер обрабатывает потоки для клиентских подключений. Помимо потоков для клиентских подключений, это также относится к определенным внутренним потокам сервера, таким как потоки Galera-ведомого. В Windows, если вы хотите использовать пул потоков, то ничего делать не нужно, так как значение по умолчанию для переменной системы thread_handling уже установлено на
pool-of-threads.- При включении режима по умолчанию
one-thread-per-connection, сервер использует один поток для обработки каждого клиентского подключения. - При включении режима
pool-of-threads, сервер использует пул потоков для клиентских подключений. - При включении режима
no-threads, сервер использует один поток для всех клиентских подключений, что действительно пригодно только для отладки.
- При включении режима по умолчанию
-
Командная строка:
--thread-handling=name - Область: Глобальная
- Динамическая: Нет
-
Тип данных:
enumeration -
Значение по умолчанию:
one-thread-per-connection(не Windows),pool-of-threads(Windows) -
Допустимые значения:
no-threads,one-thread-per-connection,pool-of-threads. - Документация: Использование пула потоков.
- Примечания: В MySQL пул потоков доступен только в MySQL Enterprise. В MariaDB он доступен во всех версиях.
thread_pool_dedicated_listener
-
Описание: Если установлено значение 1, каждый пул будет иметь свой выделенный слушатель, и поток слушателя не будет принимать задания. В результате время очереди в таблице Information Schema Threadpool_Queues и фактический размер очереди в таблице Information Schema Threadpool_Groups будет более точным, так как запросы ввода-вывода будут немедленно извлечены из очереди, без задержки.
- Эта переменная системы имеет смысл только на Unix.
-
Командная строка:
thread-pool-dedicated-listener={0|1} - Область:
- Динамическая:
-
Тип данных:
boolean -
Значение по умолчанию:
0 - Введено: MariaDB 10.5.0
thread_pool_exact_stats
-
Описание: Если установлено значение 1, предоставляются более точные статистические данные об очереди, используя отметку времени высокой точности, с небольшими затратами на производительность, для момента добавления подключения в очередь. Эта метка времени помогает рассчитать время ожидания, отображаемое в таблице Information Schema Threadpool_Queues.
- Эта переменная системы имеет смысл только на Unix.
-
Командная строка:
thread-pool-exact-stats={0|1} - Область:
- Динамическая:
-
Тип данных:
boolean -
Значение по умолчанию:
0 - Введено: MariaDB 10.5.0
thread_pool_idle_timeout
-
Описание: Количество секунд, прежде чем неактивный поток-работник завершит работу. Значение по умолчанию —
60. Если в данный момент нет работы, сколько времени неактивный поток должен ждать перед выходом?- Эта переменная системы имеет смысл только на Unix.
- Переменная системы
thread_pool_min_threadsсопоставима для Windows.
-
Командная строка:
thread-pool-idle-timeout=# - Область: Глобальная
- Динамическая: Да
-
Тип данных:
numeric -
Значение по умолчанию:
60 - Документация: Использование пула потоков.
thread_pool_max_threads
-
Описание: Максимальное количество потоков в пуле потоков. Когда этот лимит достигнут, в большинстве случаев новые потоки не создаются.
- В Unix, в редких случаях, фактическое количество потоков может незначительно превышать это значение, поскольку каждый группа потоков нуждается как минимум в двух потоках (т.е. как минимум в одном рабочем потоке и как минимум в одном потоке слушателя), чтобы предотвратить тупики.
- Область:
-
Командная строка:
thread-pool-max-threads=# - Область: Глобальная
- Динамическая: Да
-
Тип данных:
numeric -
Значение по умолчанию:
-
65536(>= MariaDB 10.2.4) -
1000(<= MariaDB 10.2.3, >= MariaDB 10.1) -
500(<= MariaDB 10.0)
-
-
Диапазон:
1до65536 - Документация: Использование пула потоков.
thread_pool_min_threads
-
Описание: Минимальное количество потоков в пуле потоков. В средах с бурными нагрузками после периода бездействия потоки обычно удаляются. При наступлении следующего всплеска требуется время для достижения оптимального уровня. Увеличение этого значения по сравнению со значением по умолчанию предотвратит удаление потоков даже при отсутствии активности.
- Эта переменная системы имеет смысл только на Windows.
- Переменная системы
thread_pool_idle_timeoutсопоставима для Unix.
-
Командная строка:
thread-pool-min-threads=# -
Тип данных:
numeric -
Значение по умолчанию:
1 - Документация: Использование пула потоков.
thread_pool_oversubscribe
-
Описание: Определяет, сколько рабочих потоков в группе потоков может оставаться активными одновременно после перегрузки группы потоков из-за задержек. Значение по умолчанию —
3. Обычно в группе потоков активен только один рабочий поток за раз. Однако поток таймера может добавить больше активных рабочих потоков в группу потоков, если обнаружит задержку. При принятии решения, разрешать ли запуск только одного потока на процессор или более одного, следует учитывать компромиссы. Разрешение только одного потока на процессор означает, что поток может иметь неограниченный доступ к процессору во время выполнения, но это также означает, что существует дополнительная нагрузка из-за более частой приостановки и возобновления потоков. Разрешение более одного потока на процессор означает, что потоки должны делиться процессором, но также означает, что существует меньшая нагрузка из-за более частой приостановки и возобновления потоков.- Для получения дополнительной информации см. Группы потоков в реализации пула потоков на Unix: Перегрузка группы потоков.
- В основном используется внутри системы и не предназначен для изменения большинством пользователей.
- Эта переменная системы имеет смысл только на Unix.
- Область: Глобальная
- Динамическая: Да
-
Тип данных:
numeric -
Значение по умолчанию:
3 -
Диапазон:
1до65536 - Документация: Использование пула потоков.
thread_pool_prio_kickup_timer
-
Описание: Время в миллисекундах, по истечении которого удалённое из очереди низкоприоритетное утверждение перемещается в очередь высокой приоритетности.
- Эта системная переменная имеет смысл только на Unix.
-
Командная строка:
thread-pool-kickup-timer=# - Область действия: Глобальная
- Динамическая: Да
-
Тип данных:
numeric -
Значение по умолчанию:
1000 -
Диапазон:
0до4294967295 - Введено в: MariaDB 10.2.2
- Документация: Использование пула потоков.
thread_pool_priority
- Описание: Приоритет пула потоков. Подключения с высоким приоритетом обычно начинают выполнение раньше, чем с низким. Если установлено значение 'auto' (по умолчанию), фактический приоритет (низкий или высокий) определяется наличием или отсутствием транзакции для подключения.
-
Командная строка:
--thread-pool-priority=# - Область действия: Глобальная,Подключение
-
Тип данных:
enum -
Значение по умолчанию:
auto -
Допустимые значения:
high,low,auto. - Введено в: MariaDB 10.2.2
- Документация: Использование пула потоков.
thread_pool_size
-
Описание: Количество групп потоков в пуле потоков, что определяет, сколько утверждений может выполняться одновременно. Значение по умолчанию — количество ЦП в системе. При установке этого системного параметра при запуске системы максимальное значение равно 100000. Однако, не рекомендуется устанавливать его так высоко. При динамической установке этого системного параметра максимальное значение равно либо 128, либо значению, установленному при запуске системы — то из значений, которое выше.
- Дополнительную информацию см. в Группа потоков в Unix-реализации пула потоков.
- Эта системная переменная имеет смысл только на Unix.
-
Командная строка:
--thread-pool-size=# - Область действия: Глобальная
- Динамическая: Да
-
Тип данных:
numeric - Значение по умолчанию: Основано на количестве процессоров (но см. MDEV-7806).
-
Диапазон:
1до128(< MariaDB 5.5.37, MariaDB 10.0.11),1до100000(>= MariaDB 5.5.37, MariaDB 10.0.11) - Документация: Использование пула потоков.
thread_pool_stall_limit
-
Описание: Количество миллисекунд между проверками блокировки, выполняемыми потоком таймера. Значение по умолчанию —
500. Обнаружение блокировок используется для предотвращения монополизации группой потоков одним клиентом. Когда поток таймера обнаруживает, что группа потоков заблокирована, он пробуждает спящий рабочий поток в группе, если такой есть. Если нет, то он создаёт новый рабочий поток в группе. Это временно позволяет нескольким подключениям клиентов в группе потоков работать параллельно. Однако обратите внимание, что поток таймера не будет создавать новый рабочий поток, если количество потоков в пуле уже больше или равно максимальному значению, определённому переменнойthread_pool_max_threads, если только в группе потоков ещё нет потока-слушателя.- Дополнительную информацию см. в Группа потоков в Unix-реализации пула потоков: Блокировки групп потоков.
- Эта системная переменная имеет смысл только на Unix.
- Обратите внимание, что если вы мигрируете из плагина пула потоков MySQL Enterprise, то единица измерения в их реализации составляет 10мс, а не 1мс.
-
Командная строка:
--thread-pool-stall-limit=# - Область действия: Глобальная
- Динамическая: Да
-
Тип данных:
numeric -
Значение по умолчанию:
500 -
Диапазон:
10до4294967295(< MariaDB 10.5),1до4294967295(>= MariaDB 10.5) - Документация: Использование пула потоков.
Переменные состояния
Threadpool_idle_threads
-
Описание: Количество неактивных потоков в пуле потоков. Потоки становятся неактивными по различным причинам, например, ожидая новой работы. Однако неактивный поток не обязательно не получает работу. Потоки также считаются неактивными, если они заблокированы, ожидая ввода-вывода с диска или ожидания блокировки и т. д.
- Эта переменная состояния имеет смысл только на Unix.
- Область действия: Глобальная, Сеанс
-
Тип данных:
numeric
Threadpool_threads
-
Описание: Количество потоков в пуле потоков. В редких случаях это значение может быть немного выше, чем
thread_pool_max_threads, поскольку каждой группе потоков требуется как минимум два потока (т. е. как минимум один рабочий поток и как минимум один поток-слушатель), чтобы предотвратить тупики. - Область действия: Глобальная, Сеанс
-
Тип данных:
numeric
См. также
Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительной проверки со стороны MariaDB. Мнения, информация и мнения, выраженные в этом содержимом, не обязательно отражают точку зрения MariaDB или любой другой стороны.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/thread-pool-system-and-status-variables/