Connection Thread Pool
Introduction
When there are a large number of concurrent database connections, a large number of resources are occupied, and the performance of the MySQL server deteriorates significantly. RDS for MySQL provides a connection thread pool that uses a few active threads to serve a large number of database connections. This decouples connections from execution and improves database performance in high-concurrency scenarios.
Characteristics
RDS for MySQL connection thread pool provides the following benefits:
- A large number of database connections can be processed, and resource contention and context switches are reduced.
- The number of concurrent transactions is limited. When the database load is heavy, transactions that are being executed are preferentially guaranteed.
- Connections are processed quickly to prevent thread exceptions.
- When a transaction is waiting for I/Os and locks, CPU resources and other connections are released.
Thread Pool Operations
- Querying thread pool parameters
Run show variables to query thread pool parameters.
show variables like 'threadpool%'; +-----------------------------------+------------+ | Variable_name | Value | +-----------------------------------+------------+ | threadpool_enabled | ON | | threadpool_high_prio_tickets | 4294967295 | | threadpool_idle_timeout | 60 | | threadpool_long_conn_time | 2 | | threadpool_max_threads | 100000 | | threadpool_oversubscribe | 3 | | threadpool_prio_kickup_timer | 1000 | | threadpool_rec_launch_time | ON | | threadpool_size | 128 | | threadpool_slow_conn_log | ON | | threadpool_slow_conn_log_interval | 30 | | threadpool_slow_launch_time | 2 | | threadpool_stall_limit | 500 | +-----------------------------------+------------+
Table 1 Thread pool parameters Parameter
Description
threadpool_enabled
Enables or disables thread pools.
threadpool_high_prio_tickets
Number of tickets held by a high-priority thread.
threadpool_idle_timeout
Idle time before a thread is destroyed, in seconds.
threadpool_long_conn_time
If the login time exceeds the value of this parameter, the login information is printed in logs.
threadpool_max_threads
Maximum number of threads that can be created in a thread pool.
threadpool_oversubscribe
Maximum number of extra threads that can be created in a thread group.
threadpool_prio_kickup_timer
Maximum duration (in milliseconds) in a low-priority queue.
threadpool_rec_launch_time
Records the thread launch time.
threadpool_size
Number of thread groups.
threadpool_slow_conn_log
Whether to record slow logins in error logs.
threadpool_slow_conn_log_interval
Recording frequency. After a slow login is recorded, the system does not record logins within this interval.
threadpool_slow_launch_time
If the login or query time is greater than the value of this parameter, the value of threadpool_slow_launch_request in status increases by 1.
threadpool_stall_limit
Interval for checking whether a thread group is busy.
Table 2 Thread pool parameters that can be modified Parameter
Dynamic Parameter
Data Type
Value Range
Description
threadpool_enabled
Yes
boolean
[ON,OFF]
- ON: Enables the thread pool.
- OFF: Disables the thread pool.
threadpool_oversubscribe
Yes
integer
[1,50]
Maximum number of extra threads that can be created in a thread group.
threadpool_size
Yes
integer
[1,512]
Number of thread groups.
- Querying thread pool status
Run show status to query the thread pool status.
show status like 'threadpool%'; +------------------------------------+------------+ | Variable_name | Value | +------------------------------------+------------+ | Threadpool_active_connections | 65 | | Threadpool_active_threads | 5 | | Threadpool_avg_launch_time | 0 | | Threadpool_dump_threads | 0 | | Threadpool_idle_threads | 63 | | Threadpool_running | ON | | Threadpool_slow_launch_request | 0 | | Threadpool_threads | 237 | | Threadpool_threads_high_water_mark | 1075 | | Threadpool_waiting_threads | 57 | | Threadpool_worst_launch_time | 692548 | +------------------------------------+------------+
Table 3 Thread pool status Status
Description
Threadpool_active_connections
Number of active connections in a thread pool
Threadpool_active_threads
Number of active threads in a thread pool
Threadpool_avg_launch_time
Average waiting time, in milliseconds
Threadpool_dump_threads
Number of dump threads
Threadpool_idle_thread
Number of idle threads in a thread pool
Threadpool_running
Whether a thread pool is running
Threadpool_slow_launch_request
Number of times that the slow_launch_request is exceeded
Threadpool_threads
Total number of connections in a thread pool
Threadpool_threads_high_water_mark
Number of historical high threads
Threadpool_waiting_threads
Status of the waiting thread pool
Threadpool_worst_launch_time
Worst launch time, in milliseconds
Performance Tests
Model |
Threads |
Thread Pool Enabled |
QPS |
Latency (ms) |
---|---|---|---|---|
oltp_update_non_index |
32 |
Yes |
5932.47 |
7.84 |
oltp_update_non_index |
64 |
Yes |
10074.11 |
9.39 |
oltp_update_non_index |
128 |
Yes |
18079.61 |
10.65 |
oltp_update_non_index |
256 |
Yes |
27439.38 |
14.46 |
oltp_update_non_index |
512 |
Yes |
33007.96 |
28.16 |
oltp_update_non_index |
1024 |
Yes |
30282.13 |
51.94 |
oltp_update_non_index |
2048 |
Yes |
29836.86 |
95.81 |
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot