在阿里云上对 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) | 阿里云监控 |
五、常见问题与调优建议
-
CPU 打满?
- 降低并发线程数。
- 检查是否有慢查询(开启 slow log)。
- 避免全表扫描,建立合适索引。
-
内存不足?
- 调整
innodb_buffer_pool_size不超过 3G。 - 减少
max_connections。
- 调整
-
I/O 瓶颈?
- 升级到更高性能云盘(如 ESSD PL1/PL2)。
- 启用只读实例分流读请求。
-
连接数过多?
- 使用连接池(如 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