在单台 Linux 服务器上同时部署 Redis 和 MySQL,“最低配置”高度依赖于业务场景(是开发测试、小型生产还是高并发生产)。由于两者都是内存密集型数据库,且对 I/O 延迟敏感,盲目追求“最低”极易导致性能瓶颈甚至服务崩溃。
以下是针对不同场景的推荐配置及核心考量逻辑:
1. 场景一:开发/测试环境 (Development/Testing)
在此场景下,主要目的是功能验证,不要求高并发和高可用性,允许偶尔的卡顿或重启。
- CPU: 2 核 (Cores)
- 理由: 足以支撑基本的查询和缓存写入,避免上下文切换开销过大。
- 内存 (RAM): 4 GB
- 分配建议: MySQL 约 1-2GB (InnoDB Buffer Pool),Redis 约 1-2GB。
- 注意: 必须开启 Swap(虚拟内存)作为缓冲,防止 OOM Killer 直接杀掉进程,但 Swap 会严重拖慢性能。
- 磁盘: 20 GB SSD (NVMe 优先)
- 理由: 机械硬盘 (HDD) 会导致 MySQL 的随机读写极慢,SSD 是底线。
- 网络: 千兆网卡
- 理由: 本地通信为主,千兆足够。
结论: 2 核 CPU / 4GB 内存 / 20GB SSD。这是能跑通的“物理极限”,但在负载稍大时就会明显变慢。
2. 场景二:小型生产环境 (Small Production)
适用于日活用户较少(如几千以内)、QPS(每秒查询数)在几百到一千左右的业务系统。此时需要保证一定的稳定性和响应速度。
- CPU: 4 核 (Cores)
- 理由: MySQL 的多线程处理(主从复制、后台线程)和 Redis 的单线程模型(虽然 Redis 6.0+ 支持多线程 IO,但核心逻辑仍受 CPU 限制)需要更多计算资源。
- 内存 (RAM): 8 GB – 16 GB
- 分配建议:
- MySQL: 预留 30%-50% 给 InnoDB Buffer Pool (约 3-6GB)。
- Redis: 预留 40%-50% 用于缓存数据 (约 3-6GB)。
- 剩余: 留给操作系统和其他应用进程。
- 关键点: 内存不足是双库共存最大的杀手。如果内存小于 8GB,必须严格限制两者的最大内存使用量,否则会发生频繁的 Swap 交换,导致数据库假死。
- 分配建议:
- 磁盘: 50 GB + NVMe SSD
- 理由: 生产环境需要更好的 IOPS 来应对日志写入和事务提交。
- 网络: 千兆或万兆网卡
- 理由: 减少网络传输延迟。
结论: 4 核 CPU / 8GB~16GB 内存 / 50GB+ NVMe SSD。这是小型业务推荐的“舒适起步线”。
3. 关键配置优化建议 (无论何种配置)
在单台机器上运行两个重型数据库,硬件只是基础,软件配置才是决定生死的关键:
A. 内存隔离与限制 (最重要)
Linux 默认会将大量内存分配给 OS Cache,这可能导致 Redis/MySQL 申请不到内存而崩溃。
- MySQL: 设置
innodb_buffer_pool_size。通常设置为总内存的 40%~50%。切勿设为 100%,否则没有内存给 OS 处理文件系统缓存。 - Redis: 设置
maxmemory。通常设置为总内存的 40%~50%。务必开启maxmemory-policy(如allkeys-lru) 防止内存溢出。 - Linux 层面: 调整
vm.swappiness为 1 或更低,尽量禁止使用 Swap。
B. 磁盘 I/O 策略
- RAID: 如果预算允许,使用 RAID 10 或至少 RAID 1 保护数据。
- 挂载选项: MySQL 的数据目录建议使用
noatime挂载参数,减少不必要的元数据写入。 - 分离: 如果磁盘空间允许,将 MySQL 的
binlog和 Redo Log 放在单独的分区或盘符上,减少争抢。
C. 监控告警
必须部署监控(如 Prometheus + Grafana),重点监控:
- Memory Usage: 接近 90% 即报警。
- Swap Usage: 只要出现 Swap 使用,立即排查。
- Disk I/O Wait: 如果
iowait长期高于 20%,说明磁盘是瓶颈。 - 连接数: 监控 MySQL 的
Threads_connected和 Redis 的connected_clients。
总结建议表
| 场景 | CPU | 内存 (RAM) | 磁盘类型 | 备注 |
|---|---|---|---|---|
| 开发/测试 | 2 核 | 4 GB | SSD (任意) | 需开启 Swap,严禁高并发测试 |
| 小型生产 | 4 核 | 8 GB ~ 16 GB | NVMe SSD | 推荐起步配置,需精细调优内存参数 |
| 中型生产 | 8 核 | 32 GB + | NVMe SSD (RAID) | 单台风险较高,建议拆分或升级架构 |
最终建议:如果是正式生产环境,强烈不建议在单台服务器上同时部署这两个核心组件。一旦某一方出现内存泄漏或死锁,另一方会被连带拖垮,且故障排查困难。如果必须共用,请至少按 4 核 16GB 配置,并严格执行内存隔离策略。
云计算导航