在单台 Linux 服务器上同时部署 Redis 和 MySQL(非生产环境,仅用于开发、测试或轻量级业务),推荐的最低硬件配置需兼顾两者的基本运行需求、内存隔离性(避免 OOM)、以及系统自身开销。以下是务实、经过验证的最低推荐配置(非绝对下限,而是保障基本可用性和稳定性的起点):
✅ 推荐最低硬件配置(单机共存场景)
| 组件 | 推荐最低配置 | 说明 |
|---|---|---|
| CPU | 4 核(vCPU 或物理核心) | MySQL(尤其查询/写入)和 Redis(单线程但高响应要求)均需 CPU 资源;2 核易成为瓶颈(尤其并发稍增时)。4 核可提供合理余量。 |
| 内存 | 8 GB RAM | ⚠️ 最关键项: • MySQL:建议至少 2–3 GB 分配给 innodb_buffer_pool_size(占总内存 25–40%)• Redis:建议预留 2–3 GB(若用作缓存,需预留足够空间避免频繁淘汰;若持久化开启,需额外内存) • OS + 其他进程(SSH、日志、监控等):约 1–1.5 GB • 低于 6 GB 风险极高(易触发 OOM Killer 杀死 MySQL/Redis 进程) |
| 存储 | SSD(≥50 GB 可用空间) | • HDD 会严重拖慢 MySQL I/O(尤其是刷脏页、redo log、binlog)和 Redis RDB/AOF 持久化 • SSD 是硬性要求(NVMe 更佳) • 空间需容纳:OS(~10GB)、MySQL 数据+日志(初始 5–10GB)、Redis 数据+持久化文件+快照备份(5–10GB)、预留 20% 空间防磁盘满(MySQL/Redis 崩溃风险) |
| 网络 | 千兆网卡(≥1 Gbps) | 满足本地应用访问(Redis 默认 bind 127.0.0.1,MySQL 可设为 local socket 或内网访问),非瓶颈项,但千兆是当前主流标配 |
⚠️ 重要注意事项与优化建议
-
内存分配必须显式限制(否则极易崩溃)
- ✅ MySQL:在
my.cnf中严格设置:[mysqld] innodb_buffer_pool_size = 2G # 建议 2–3G,勿超总内存50% max_connections = 100 # 降低默认值(默认151+太激进) - ✅ Redis:在
redis.conf中设置:maxmemory 2gb maxmemory-policy allkeys-lru # 避免OOM # 关闭持久化(开发环境可选)或调大 save 间隔减少I/O压力 save "" # 禁用RDB(或设为 save 300 1) appendonly no # 禁用AOF(或设为 appendfsync everysec)
- ✅ MySQL:在
-
系统级调优(必做)
- 关闭
vm.swappiness=1(减少内存交换,防止 Redis/MySQL 性能骤降) - 为 MySQL 配置
innodb_flush_method=O_DIRECT(绕过 OS cache,避免双重缓存) - 使用
systemd限制服务内存上限(防失控):# /etc/systemd/system/mysqld.service.d/limits.conf [Service] MemoryLimit=4G
- 关闭
-
绝对不推荐的配置(避坑)
❌ 2核2GB(常见云服务器“入门款”)→ MySQL 启动即占 1.2GB+,Redis 加载 10MB 数据就 OOM
❌ HDD 存储 → MySQL 写入延迟 >100ms,Redis 持久化卡顿导致连接超时
❌ 不设maxmemory/innodb_buffer_pool_size→ 系统内存耗尽后随机 kill 进程 -
生产环境强烈不建议单机共存
- 故障耦合:MySQL 崩溃可能拖垮 Redis(或反之)
- 资源争抢:IO、内存带宽、CPU 缓存竞争
- 安全隔离:数据库权限、网络暴露面叠加风险
→ 生产环境请务必分离部署(物理机/容器/VM 隔离)
📌 总结:一句话建议
开发/测试环境最低可行配置:4核 CPU + 8GB 内存 + SSD(50GB+),并必须手动限制 MySQL 和 Redis 的内存使用上限,否则稳定性无法保障。若预算允许,16GB 内存 + NVMe SSD 是更舒适、可扩展的起点。
如需根据您的具体场景(例如:数据量预估、QPS 要求、是否启用持久化、是否跑 Web 应用等)进一步定制配置,欢迎补充细节,我可为您生成具体的 my.cnf / redis.conf 优化模板及 systemd 配置。
CLOUD技术博