High Memory Usage of RDS for MySQL Instances
For a DB instance storing mission-critical application data
Scale up your instance by referring to Changing a DB Instance Class.
For a DB instance not storing mission-critical application data
Check the memory usage of the local computer. If the memory usage curve is stable, no action is required.
For a DB instance storing mission-critical application data and configured with a large instance class
- During off-peak hours, change the value of performance_schema to OFF. For RDS for MySQL 5.6 and earlier versions, you should reboot the instance for the change to take effect.
- View the memory usage of your instance using DBA Assistant. For details, see Viewing Performance Metrics of a DB Instance.
If the memory usage remains high, perform either of the following operations:
- Scale up the instance class.
- Change the value of innodb_buffer_pool_size. Table 1 lists the recommended values for different memory specifications. The actual value ranges are displayed on the RDS console.
Table 1 Recommended values for different memory specifications Memory (GB)
Recommended Value in Version 5.6
Recommended Value in Version 5.7
Recommended Value in Version 8.0
2
536,870,912 bytes (512 MB)
536,870,912 bytes (512 MB)
536,870,912 bytes (512 MB)
4
1,073,741,824 bytes (1 GB)
1,073,741,824 bytes (1 GB)
1,073,741,824 bytes (1 GB)
8
4,294,967,296 bytes (4 GB)
4,294,967,296 bytes (4 GB)
5,368,709,120 bytes (5 GB)
16
8,589,934,592 bytes (8 GB)
8,589,934,592 bytes (8 GB)
9,663,676,416 bytes (9 GB)
32
22,548,578,304 bytes (21 GB)
22,548,578,304 bytes (21 GB)
21,474,836,480 bytes (20 GB)
64
47,244,640,256 bytes (44 GB)
47,244,640,256 bytes (44 GB)
47,244,640,256 bytes (44 GB)
128
96,636,764,160 bytes (90 GB)
94,489,280,512 bytes (88 GB)
94,489,280,512 bytes (88 GB)
192
146,028,888,064 bytes (136 GB)
146,028,888,064 bytes (136 GB)
146,028,888,064 bytes (136 GB)
256
193,273,528,320 bytes (180 GB)
193,273,528,320 bytes (180 GB)
193,273,528,320 bytes (180 GB)
384
298,500,227,072 bytes (278 GB)
300,647,710,720 bytes (280 GB)
300,647,710,720 bytes (280 GB)
512
412,316,860,416 bytes (384 GB)
412,316,860,416 bytes (384 GB)
412,316,860,416 bytes (384 GB)
768
618,475,290,624 bytes (576 GB)
618,475,290,624 bytes (576 GB)
618,475,290,624 bytes (576 GB)
1024
824,633,720,832 bytes (768 GB)
824,633,720,832 bytes (768 GB)
824,633,720,832 bytes (768 GB)
- Change the value of innodb_buffer_pool_size as needed.
- MySQL has a dynamic memory balancing mechanism. If the memory usage is less than 90%, no action is required. You are advised to set the alarm threshold for memory usage to 90% or above.
- The memory used by the buffer pool will gradually increase to the value of innodb_buffer_pool_size as the database runs. You can check the memory usage of the buffer pool based on the metric Buffer Pool Usage.
- RDS for MySQL memory is allocated to the engine layer and server layer.
- The memory allocated to the engine layer includes the InnoDB buffer pool, log buffer, and full text index cache. The InnoDB buffer pool is resident memory and accounts for a large proportion.
The InnoDB buffer pool is a memory area that holds cached InnoDB data for tables, indexes, and other auxiliary buffers. You can use the innodb_buffer_pool_size parameter to define the buffer pool size.
- The memory allocated to the server layer is occupied by the thread cache, binlog cache, sort buffer, read buffer, and join buffer. These caches and buffers are usually released when connections are closed.
Such memory allocation keeps memory usage of a running RDS for MySQL instance at about 80%.
- The memory allocated to the engine layer includes the InnoDB buffer pool, log buffer, and full text index cache. The InnoDB buffer pool is resident memory and accounts for a large proportion.
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