阿里云 2C4G mysql压测?

在阿里云上对 2核4G(2C4G) 的 MySQL 实例进行压测,是为了评估该配置下的数据库性能表现(如 QPS、TPS、响应时间、连接数等),为线上部署或容量规划提供参考。以下是完整的压测方案和建议:


一、环境准备

1. 阿里云资源配置

  • 实例类型:RDS MySQL 或 ECS 自建 MySQL
    • 推荐使用 RDS MySQL(如 mysql8.0),便于监控与管理。
    • 若使用 ECS,推荐选择通用型实例(如 ecs.c6.large 或 ecs.g6.large)。
  • 配置:2核 CPU、4GB 内存
  • 存储
    • RDS:建议使用 SSD 云盘,至少 40GB 起。
    • ECS:挂载 ESSD 或高效云盘。
  • 网络:同地域内使用内网连接,避免公网延迟影响。

2. 数据库配置优化(my.cnf)

针对 2C4G 进行基础调优:

[mysqld]
# 基础设置
innodb_buffer_pool_size = 2G          # 物理内存的 50%~70%
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2    # 提高性能,牺牲一点持久性
sync_binlog = 0
max_connections = 300
table_open_cache = 2000
query_cache_type = 0                  # MySQL 8.0 已移除,若用 5.7 可关闭
tmp_table_size = 64M
max_heap_table_size = 64M

# 日志
slow_query_log = 1
long_query_time = 1

修改后需重启 MySQL 生效。


二、压测工具选择

常用压测工具:

工具 说明
sysbench 开源、轻量、支持 OLTP 模拟,适合基准测试
mysqlslap MySQL 自带,简单易用
HammerDB 图形化,支持 TPC-C 模型,适合企业级测试
JMeter + JDBC 灵活,可自定义 SQL 和场景

推荐使用 sysbench,标准化程度高。


三、使用 sysbench 进行 OLTP 压测

1. 安装 sysbench(ECS 上执行)

# CentOS/Alibaba Cloud Linux
yum install -y epel-release
yum install -y sysbench

# Ubuntu/Debian
apt-get update
apt-get install -y sysbench

2. 准备测试数据

sysbench oltp_read_write 
  --mysql-host=your-rds-endpoint.mysql.rds.aliyuncs.com 
  --mysql-port=3306 
  --mysql-user=your_user 
  --mysql-password=your_password 
  --mysql-db=sbtest 
  --tables=10 
  --table-size=100000 
  prepare

创建 10 张表,每张 10 万行数据,约占用几百 MB。

3. 执行压测(模拟并发)

sysbench oltp_read_write 
  --mysql-host=your-rds-endpoint.mysql.rds.aliyuncs.com 
  --mysql-port=3306 
  --mysql-user=your_user 
  --mysql-password=your_password 
  --mysql-db=sbtest 
  --tables=10 
  --table-size=100000 
  --threads=16            # 并发线程数(可测试 4,8,16,32)
  --time=300              # 持续 5 分钟
  --report-interval=10    # 每 10 秒输出一次统计
  run

四、关注核心指标

压测过程中观察以下指标:

指标 期望值(2C4G) 监控方式
QPS(Queries Per Second) 2000 ~ 5000+ sysbench 输出
TPS(Transactions Per Second) 200 ~ 800+ sysbench 输出
响应时间(avg/95% latency) < 20ms(低并发时) sysbench 输出
CPU 使用率 < 80% 阿里云监控 / top
内存使用 buffer pool 命中率 > 95% SHOW ENGINE INNODB STATUS
IOPS < 云盘上限(如 3000 IOPS) 阿里云监控

五、常见问题与调优建议

  1. CPU 打满?

    • 降低并发线程数。
    • 检查是否有慢查询(开启 slow log)。
    • 避免全表扫描,建立合适索引。
  2. 内存不足?

    • 调整 innodb_buffer_pool_size 不超过 3G。
    • 减少 max_connections
  3. I/O 瓶颈?

    • 升级到更高性能云盘(如 ESSD PL1/PL2)。
    • 启用只读实例分流读请求。
  4. 连接数过多?

    • 使用连接池(如 HikariCP)。
    • 避免短连接频繁创建。

六、压测报告示例(摘要)

Threads: 16
Duration: 300s

TPS: 650.34
QPS: 13006.8
Latency (avg): 24.5ms
Latency (95%): 48ms
CPU Usage: 75%
Memory Usage: 3.6G

结论:2C4G 可支撑中等负载 Web 应用(日活 < 10万),高并发需读写分离或升级配置。


七、扩展建议

  • 使用 阿里云 DAS(数据库自治服务) 进行智能压测与性能分析。
  • 结合 Prometheus + Grafana 做长期监控。
  • 生产环境建议使用 4C8G 起步,2C4G 仅适合测试或低负载场景。

如需,我可以提供完整的 shell 脚本或 HammerDB 测试方案。是否需要?

未经允许不得转载:云计算HECS » 阿里云 2C4G mysql压测?