在阿里云上使用 2核4G(2C4G)的服务器部署 MySQL 并进行压测,是一种常见的性能测试方式。下面我将从以下几个方面来帮助你完成这项工作:
一、准备工作
1. 环境准备
- 服务器配置:ECS 实例(2C4G)
- 操作系统:建议 CentOS / Ubuntu / Alibaba Cloud Linux
- MySQL 版本:推荐 5.7 或 8.0(根据项目需求选择)
- 数据库引擎:InnoDB(默认)
2. 安装 MySQL
你可以通过 yum/apt 包管理器安装,或者使用 Docker 部署。
示例(CentOS 下安装 MySQL 8.0):
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
sudo yum install mysql-community-server
sudo systemctl start mysqld
sudo systemctl enable mysqld
首次启动后,获取临时密码:
grep 'temporary password' /var/log/mysqld.log
登录并修改密码:
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPass';
二、压测工具选择
常用的 MySQL 压测工具有:
| 工具 | 描述 |
|---|---|
| sysbench | 最常用,功能强大,支持 OLTP 测试 |
| mysqlslap | MySQL 自带,简单易用 |
| JMeter | 可以模拟复杂业务逻辑 |
| HammerDB | 支持 GUI,适合企业级测试 |
这里我们以 sysbench 为例进行演示。
三、使用 sysbench 进行压测
1. 安装 sysbench
# CentOS/RHEL
sudo yum install sysbench
# Ubuntu/Debian
sudo apt-get install sysbench
2. 初始化测试数据库和表
创建测试库:
CREATE DATABASE sbtest;
准备数据(例如生成 10 张表,每张表 100,000 条记录):
sysbench
--db-driver=mysql
--mysql-host=127.0.0.1
--mysql-port=3306
--mysql-user=root
--mysql-password='YourPass'
--mysql-db=sbtest
--tables=10
--table-size=100000
oltp_common
prepare
3. 执行压测
执行读写混合测试(比如运行 60 秒):
sysbench
--db-driver=mysql
--mysql-host=127.0.0.1
--mysql-port=3306
--mysql-user=root
--mysql-password='YourPass'
--mysql-db=sbtest
--threads=16
--time=60
--report-interval=10
oltp_read_write
run
4. 清理测试数据
sysbench
--db-driver=mysql
--mysql-host=127.0.0.1
--mysql-port=3306
--mysql-user=root
--mysql-password='YourPass'
--mysql-db=sbtest
oltp_common
cleanup
四、优化与调参建议(针对 2C4G)
由于资源有限,建议调整以下参数以提升性能:
1. 修改 MySQL 配置文件 /etc/my.cnf
[mysqld]
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
max_connections = 100
query_cache_type = 0
query_cache_size = 0
tmp_table_size = 64M
max_allowed_packet = 64M
thread_cache_size = 8
table_open_cache = 200
innodb_flush_log_at_trx_commit = 2
重启 MySQL 生效:
sudo systemctl restart mysqld
2. 监控系统资源
使用 top、htop、iotop、vmstat、sar 等工具监控 CPU、内存、磁盘 I/O 使用情况。
五、压测结果分析(关键指标)
| 指标 | 说明 |
|---|---|
| TPS | Transactions per second |
| QPS | Queries per second |
| Latency | 请求延迟(平均、95%、最大) |
| Threads | 并发线程数 |
| CPU/Mem 使用率 | 资源瓶颈判断依据 |
六、扩展建议
- 如果 2C4G 性能不足,可升级 ECS 规格(如 4C8G、8C16G)
- 使用 RDS MySQL 替代自建数据库,更稳定可靠
- 结合云监控服务查看实时性能数据(阿里云监控平台)
- 使用缓存(Redis)降低数据库压力
七、常见问题排查
- 连接超时:检查防火墙、端口开放(3306)、max_connections 设置
- 慢查询:开启慢查询日志,优化 SQL
- OOM 内存溢出:调整 innodb_buffer_pool_size
- IO 瓶颈:考虑 SSD 磁盘或更高 IO 性能的实例类型
如果你提供具体的压测目标(如并发用户数、QPS 目标等),我可以进一步给出定制化的压测脚本和优化建议。
是否需要我为你生成一个完整的 sysbench 脚本?
CLOUD技术博