---
title: 使用BenchMarkSQL测试MySQL时提示java.lang.OutOfMemoryError的解决方法
description: "使用BenchMarkSQL测试MySQL过程中，提示“java.lang.OutOfMemoryError: Java heap space和java.lang.OutOfMemoryError: GC overhead limit exceeded”。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/troubleshooting/trouble/boostkit_database_troublecase_027.html
sourcePath: /source/zh/kunpengdbs/troubleshooting/trouble/boostkit_database_troublecase_027.html
indexId: 548d3e47714193e99cad1397f28a6cb2962151397541023280ca1d03b7312f0684
---
# 使用BenchMarkSQL测试MySQL时提示java.lang.OutOfMemoryError的解决方法

#### 问题现象描述

使用BenchMarkSQL测试MySQL过程中，提示“java.lang.OutOfMemoryError: Java heap space和java.lang.OutOfMemoryError: GC overhead limit exceeded”。


#### 关键过程、根本原因分析

使用BenchMarkSQL测试MySQL过程中，如果运行速度过快，就会提示“OutOfMemoryError”。

可能是因为分配的内存太小，my.cnf文件中Buffer Pool的配置值过大。


#### 结论、解决方案及效果

在MySQL的InnoDB存储引擎中，Buffer Pool是一个至关重要的内存区域，用于缓存数据和索引。合理配置Buffer Pool的大小可以显著提升性能。一般建议将Buffer Pool的值配置为内存的60%～70%。

例如在使用32GB内存的KVM虚拟机的场景中，建议将Buffer Pool的值配置为20GB。如果开启了performance_schema，Buffer Pool的值则需要配置为更小的值，例如18GB。

以下为如何设置Buffer Pool大小的操作步骤：

1. 通过以下SQL语句查看“innodb_buffer_pool_size”当前的配置值。
  1 SHOW VARIABLES LIKE 'innodb_buffer_pool_size';

2. 设置“innodb_buffer_pool_size”的值。例如，要将“innodb_buffer_pool_size”的值设置为4GB。

  - 方法一：可以在MySQL的配置文件（例如my.cnf）中设置“innodb_buffer_pool_size”的值。

```
[mysqld]innodb_buffer_pool_size = 4G
```


    修改MySQL配置文件后，需要重启MySQL服务才能使设置生效。

  - 方法二：如果希望在不重启MySQL服务的情况下动态调整“innodb_buffer_pool_size”的值，可以使用此方法动态调整“innodb_buffer_pool_size”的值。
    动态调整可能会导致性能波动，因此建议在操作系统负载较低时进行，并密切关注数据库性能。

    动态调整“innodb_buffer_pool_size”值的SQL语句如下。

    1 SET GLOBAL innodb_buffer_pool_size = 4294967296;

3. 重新执行测试MySQL任务。
