在单台 Linux 服务器上同时部署 Redis 和 MySQL(非生产环境,如开发、测试、小型内部应用或低流量轻量级服务),推荐的最低硬件配置需兼顾两者基础运行需求及合理隔离性。以下是分场景的务实建议:
✅ 推荐最低配置(适用于:开发/测试环境、日活 < 100 的内部工具、QPS < 50 的简单 Web 应用)
| 组件 | 推荐最低配置 | 说明 |
|---|---|---|
| CPU | 2 核(vCPU 或物理核心) | MySQL 启动+基础查询 + Redis 单线程处理需至少 2 核避免严重争抢;1 核极易因 I/O 或锁竞争导致响应延迟飙升 |
| 内存 | 4 GB RAM | ⚠️ 关键瓶颈! • MySQL:建议分配 innodb_buffer_pool_size = 1.5–2 GB(占总内存 40–50%)• Redis:建议预留 1–1.5 GB(若数据集 ≤ 500 MB,留余量防 OOM)• 系统+其他进程:需 ≥ 512 MB → 低于 4 GB 极易触发频繁 swap,性能断崖式下降 |
| 存储 | ≥ 40 GB SSD(NVMe 更佳) | • MySQL 日志(binlog、redo log、slow log)、数据文件增长快 • Redis RDB/AOF 持久化需额外空间 • 机械硬盘(HDD)不推荐:MySQL 随机写 + Redis 持久化 I/O 延迟高,响应不稳定 |
| OS | Linux(如 Ubuntu 22.04 / CentOS Stream 9) | 内核 ≥ 5.4,支持现代 I/O 调度与内存管理 |
✅ 为什么不是“理论最低”(如 1C2G)?
- MySQL 在 1G 内存下只能设置极小 buffer pool(如 256MB),InnoDB 性能急剧恶化,查询可能秒级延迟;
- Redis 若开启 AOF 或 RDB,在 2G 内存下无余量应对 fork() 内存翻倍(Linux Copy-on-Write),极易 OOM Kill;
- 实测表明:3GB 内存是临界点,但 4GB 是稳定可用的底线。
⚠️ 重要注意事项(决定能否稳定运行)
-
内存分配必须手动调优(不可依赖默认值)
# my.cnf(MySQL) innodb_buffer_pool_size = 1800M # ≈ 1.8GB,勿超总内存50% innodb_log_file_size = 128M max_connections = 100 # 避免连接数爆炸耗尽内存 # redis.conf(Redis) maxmemory 1200mb # 显式限制,防止吃光内存 maxmemory-policy allkeys-lru # 合理淘汰策略 save 300 10 # 减少 RDB 频率(或禁用 save,用 AOF) appendonly yes # AOF 更安全(但需权衡性能) -
I/O 隔离建议
- 若为单盘 SSD,将 MySQL 数据目录(
/var/lib/mysql)和 Redis 持久化目录(/var/lib/redis)放在同一挂载点但不同子目录即可; - 强烈建议禁用 swap(
sudo swapoff -a && sudo sed -i '/swap/d' /etc/fstab),避免内存压力下 swap 导致 Redis/MySQL 假死。
- 若为单盘 SSD,将 MySQL 数据目录(
-
监控必备
# 实时观察内存压力 watch -n 1 'free -h && echo "---" && ps aux --sort=-%mem | head -5' # 检查 Redis 内存使用 redis-cli info memory | grep -E "used_memory_human|maxmemory_human"
🚫 不推荐的场景(即使硬件达标也应拆分)
| 场景 | 原因 |
|---|---|
| 生产环境(任何用户付费/核心业务) | 单点故障、资源争抢(MySQL 内存抖动影响 Redis 响应)、安全隔离不足(如 Redis 未设密码暴露 MySQL 网络) |
| Redis 用作缓存且 MySQL QPS > 100 | CPU 成为瓶颈(MySQL 查询解析 + Redis 网络事件循环争抢) |
| Redis 存储 > 1GB 数据或启用 Redis Cluster | 内存与 fork 开销剧增,4GB 不足 |
✅ 生产环境强烈建议:
- Redis 独立部署(或容器化隔离)
- MySQL 使用专用实例(或至少与 Redis 分开物理机/云主机)
💡 总结一句话建议:
开发/测试环境最低可行配置:2核 CPU + 4GB 内存 + 40GB SSD,且必须手动限制 MySQL Buffer Pool 和 Redis maxmemory,并关闭 swap。低于此配置,稳定性与可维护性将显著下降。
如需根据您的具体场景(如数据量、并发量、是否持久化、SLA要求)进一步优化配置,欢迎提供详细信息,我可为您定制 tuning 方案。
云计算HECS