【问题标题】:RDS High CPU utilizationRDS 高 CPU 使用率
【发布时间】:2017-09-22 12:36:22
【问题描述】:

我正面临 CPU 使用率过高的问题,并发 create temporary table 语句是否会导致 CPU 使用率过高?

是否有任何查询通过我们可以捕获导致 CPU 使用率高的查询?

我们设置的变量:-

tmp_table_size = 1G

max_heap_table_size = 1G

innodb_buffer_pool_size = 145 G

innodb_buffer_pool_instance = 8

innodb_page_cleaner = 8

状态变量:-

        mysql> show global status like '%tmp%';
    +-------------------------+-----------+
    | Variable_name           | Value     |
    +-------------------------+-----------+
    | Created_tmp_disk_tables | 60844516  |
    | Created_tmp_files       | 135751    |
    | Created_tmp_tables      | 107643364 |
    +-------------------------+-----------+
mysql> show global status like '%innodb_buffer%';
+---------------------------------------+--------------------------------------------------+
| Variable_name                         | Value                                            |
+---------------------------------------+--------------------------------------------------+
| Innodb_buffer_pool_dump_status        | Dumping of buffer pool not started               |
| Innodb_buffer_pool_load_status        | Buffer pool(s) load completed at 170917 19:11:45 |
| Innodb_buffer_pool_resize_status      |                                                  |
| Innodb_buffer_pool_pages_data         | 8935464                                          |
| Innodb_buffer_pool_bytes_data         | 146398642176                                     |
| Innodb_buffer_pool_pages_dirty        | 18824                                            |
| Innodb_buffer_pool_bytes_dirty        | 308412416                                        |
| Innodb_buffer_pool_pages_flushed      | 122454921                                        |
| Innodb_buffer_pool_pages_free         | 188279                                           |
| Innodb_buffer_pool_pages_misc         | 377817                                           |
| Innodb_buffer_pool_pages_total        | 9501560                                          |
| Innodb_buffer_pool_read_ahead_rnd     | 0                                                |
| Innodb_buffer_pool_read_ahead         | 585245                                           |
| Innodb_buffer_pool_read_ahead_evicted | 14383                                            |
| Innodb_buffer_pool_read_requests      | 304878851665                                     |
| Innodb_buffer_pool_reads              | 10537188                                         |
| Innodb_buffer_pool_wait_free          | 0                                                |
| Innodb_buffer_pool_write_requests     | 14749510186                                      |
+---------------------------------------+--------------------------------------------------+

【问题讨论】:

  • Created_tmp_tables 确实可能导致 CPU 使用率很高.. 但这个问题应该在dba.stackexchange.com
  • 您可以重新编程您的 (php) 代码,以便在查询之前和之后触发 show session status like '%tmp%',然后如果您记录查询和状态,您可以找出创建临时表所需的查询。 . 你最有可能想要优化这些 qeuries。
  • 让我们退一步来看一个常见的查询。几乎总是“高 CPU”是由低效的查询引起的——索引不佳、查询的表述不佳等。大量的 tmp 表本身并不是邪恶的。在不知道Uptime 的情况下,那些计数器毫无用处。另外,你有TEXT 列吗?

标签: mysql performance amazon-web-services innodb amazon-rds


【解决方案1】:
  • 第 1 步 - 显示进程列表 如果是,则查找是否任何进程正在锁定表,而不是将其更改为 myisam。

  • 第 2 步 - 检查 Ram 和您的数据库大小

  • 第 3 步 - 解释复杂查询并检查文件排序或最大 od 行数是否被扫描通过使表平坦,不超过 4 个子查询来删除它

  • 第 4 步 - 高效使用连接

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 2014-07-16
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多