购买了几个1H1G之类的vps,例如bmit ,按照我的使用场景,就会面临一个问题:
内存过小!
必须使用通用的有群体基础的一些方案或者软件,这样有了问题好搜索询问,相关优化的一些问题:
安装宝塔手动勾选(推荐配置):
- Web服务器:Nginx (选择
1.24或稳定版本,不要选太新的)。 - 数据库:MariaDB (选择
10.2或10.3版本,千万不要选 MySQL 8.0,它太吃内存了)。 - PHP:PHP 7.4 (性能与资源占用的平衡点,比 PHP 8.x 更轻量)。
- FTP:不需要,不勾选。
- phpMyAdmin:建议安装(方便管理数据库),但用完可以关闭
即使使用 1Panel,在 1h1g 的机器上运行 WordPress 也要注意:
- 数据库:建议使用 MariaDB 10.6 以下版本,比 MySQL 8.0 更省内存。
- 缓存:务必安装 Redis 缓存插件,减少数据库查询,这是低配机器流畅运行的秘诀。
- Swap:在 1Panel 或系统设置里,务必分配 512MB – 1GB 的 Swap 虚拟内存,作为物理内存不足时的“救命稻草”。
- 如果是测试或者不常用网站,网站“关闭”或“停止”,这样做也能显著降低内存占用。
停止站点 + 停止数据库服务 (最省资源)
-
宝塔面板上-数据库配置优化 (my.cnf)
你需要调整数据库的配置文件,防止它因为“缓存太大”而导致内存溢出。- 操作路径:宝塔面板 -> 软件商店 -> MySQL -> 配置修改。
- 关键参数调整(将以下数值调低):
ini # 缓冲池大小 (这是最大的内存占用项)
# 原值可能为 128M 或更高,改为:
innodb_buffer_pool_size = 64M# 禁用查询缓存 (在低配机器上,查询缓存反而可能成为负担)
query_cache_type = 0
query_cache_size = 0# 临时表大小
tmp_table_size = 32M
max_heap_table_size = 32M 效果:通过限制数据库的缓存大小,强制它少占用内存,虽然极少数高并发场景下速度会慢一点,但对于你的“测试”用途完全无感,却能换来系统的稳定。
1. 宝塔下,优化源码 PHP 设置(省内存核心)
- 路径:宝塔面板 -> 软件商店 -> 找到 PHP 7.4 -> 设置。
- 性能调整:
- 进程管理器:改为
static(静态)。 - 最大子进程数 (Max children):必须调低! 默认可能是 50,建议改为 5 – 10。这能防止 PHP 疯狂占用内存导致服务器死机。
- 内存限制 (memory_limit):改为
128M即可。
- 进程管理器:改为
2. 优化数据库,例如 MariaDB (数据库)
- 路径:宝塔面板 -> 软件商店 -> MariaDB -> 设置 -> 配置修改。
- 修改参数:找到
innodb_buffer_pool_size,将其改为 64M(默认可能很高,1G 内存下必须降低)。
3. 站点配置优化
- 伪静态:在「网站」设置里,选择「伪静态」,填入
wordpress(例如),这有助于 Nginx 更高效地处理请求。 - 禁用 Pingbacks/Trackbacks:在 WordPress 后台设置中关闭这些功能,减少数据库查询负担。
总结:1h1g 宝塔部署清单
表格
| 项目 | 推荐配置 (1h1g) | 避坑指南 |
|---|---|---|
| 操作系统 | Debian 12 / Ubuntu 22.04 | 避免使用 Windows Server |
| Web服务器 | Nginx 1.24 | 保持默认配置即可 |
| 数据库 | MariaDB 10.2/10.3 | 严禁使用 MySQL 8.0 |
| PHP版本 | PHP 7.4 | 避免使用 PHP 8.x (内存占用高) |
| PHP进程数 | Max children = 5-10 | 默认50会直接撑爆1G内存 |
| 数据库缓存 | innodb_buffer_pool_size = 64M | 默认值过高,必须手动调低 |
其他:
1.swap
硬盘虚拟成内存,一般为1-1.5X倍。cpu设置90%使用后,可以开启swap,速度没有物理内存运转快,但是应急可以了,不稳定
2.Zram
zram通过cpu转换成内存,内存提高运转快了,但是却消耗了cpu资源,一般swap file和zram swap同时使用,设置优先级,让系统优先使用zram swap
🤔 1. 传统 Swap(虚拟内存)是怎样的?
- 缺点:硬盘(即使是 SSD)读写速度比内存慢成千上万倍。一旦开始使用 Swap,服务器就会变得非常卡顿,甚至假死。
✨ 2. zRAM 是怎样的?
- 原理:它在内存中划出一块区域,当内存不够用时,系统会把那些“暂时睡着”的程序数据压缩(就像打包成 zip 文件)存进这块区域。
- 好处:因为数据还是存在内存里,所以读取速度极快(微秒级延迟),没有硬盘 I/O 延迟。
- 代价:压缩和解压数据需要消耗 CPU 算力。
📊 一张表看懂区别
表格
| 特性 | 传统 Swap (硬盘) | zRAM (内存压缩) |
|---|---|---|
| 存储介质 | 硬盘/SSD | 物理内存 (RAM) |
| 读写速度 | 慢 (容易卡顿) | 极快 (不卡顿) |
| 占用资源 | 占用硬盘空间 | 占用少量 CPU |
| 适用场景 | 内存严重不足 | 低配 VPS (如 1G 内存) |
💡 为什么别人说“内存小要装 zRAM”?
- 防止 OOM (内存溢出):
当你运行 WordPress 时,如果内存刚好用满 1G,系统可能会因为没有一点“喘息空间”而直接强制杀死 MySQL 或 Nginx 进程(报错 502)。zRAM 提供了一个缓冲区,让系统觉得“还有内存可用”,从而避免崩溃。 - 比硬盘 Swap 更聪明:
在 VPS 里,使用硬盘 Swap 不仅慢,而且频繁读写还可能影响 SSD 寿命(虽然现在 SSD 很耐用)。zRAM 利用了 CPU 的空闲算力(你的 VPS CPU 可能经常是空闲的),把内存“变大”了一点。 - 提升低配机器体验:
对于 1G 内存,开启 zRAM 后,系统会更积极地回收内存碎片,让前台运行的网站更流畅。
🛠️ 怎么用?(简单版)
# 加载 zram 模块
modprobe zram# 设置 zram 设备大小 (例如 512MB,压缩后实际能存更多数据)echo 512M > /sys/block/zram0/disksize
# 设置压缩算法 (推荐 lz4,速度快)echo lz4 > /sys/block/zram0/comp_algorithm
# 格式化为 swapmkswap /dev/zram0
# 启用
swapon /dev/zram0
📌 总结
根据友佬@crzax的帖子 https://www.nodeseek.com/post-69126-1
制作的一键开启zram脚本
脚本
curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/zram_manager.sh && chmod +x zram_manager.sh && ./zram_manager.sh
3.面板
熟悉的宝塔面板是很耗费资源的,别人肯定推荐1panel,也有推荐amh,貌似没有1panel资源丰富,属于上一代的产品,当然也有推荐耗子面板的,这里就不尝试了,webmin似乎也有一些人推荐
4.stop bt
如果宝塔面板用的不多,平时可以ssh下service bt stop,偶尔使用的时候的 service bt start,当然也可以
5.修改bt设置
a.mysql改为MariaBd数据库,不安装mysql8.0,安装MariaBD 10.1
b.宝塔源码内存手动 innodb_buffer_pool_size 调整为32m-64m
c.php版本选择7.4,或者8.x的低版本
d.进程数也修改低一些
1. 必须关闭的功能(省出 100MB+ 内存)
- 关闭“监控”插件:
- 宝塔自带的监控插件(CPU、内存、流量统计)非常吃资源。
- 操作:在面板设置里把“面板消息通道”关闭,或者干脆卸载监控插件。你可以在 SSH 里用
htop命令看内存,没必要在面板上盯着曲线图。
- 不要装“防火墙”插件:
- 宝塔的付费防火墙插件(或免费版)会常驻进程。
- 替代方案:直接用 DMIT 控制台的安全组,只开放 80 和 443 端口,服务器里装个 fail2ban 就够了。
2. 必须优化的配置(省出 200MB+ 内存)
- MySQL/MariaDB 设置:
- 不要用 MySQL 8.0:如果你还没装环境,千万别选 MySQL 8.0,它在 1g 内存下启动都费劲。
- 推荐:安装 MariaDB 10.1 或 5.6。
- 配置:安装完成后,点击数据库的“设置” -> “性能调整”,选择“极小内存占用”模式(或者手动将
innodb_buffer_pool_size调整为 32M-64M)。
- PHP 设置:
- 版本:推荐 PHP 7.4(Typecho 兼容性最好,且比 8.x 省资源)。
- 进程数:这是爆内存的元凶!点击 PHP 的“设置” -> “性能调整”。
- 运行模式:选择
static(静态)。 - 最大子进程数:必须调低! 默认是 50,建议改为 5 或 10。这能防止 PHP 疯狂开进程把内存撑爆。
- 运行模式:选择
如何“彻底关闭”宝塔面板
- 连接 SSH:使用 Xshell、Putty 或者 FinalShell 连接到你的 VPS。
- 输入停止命令:
bash /etc/init.d/bt stop或者
bash service bt stop
表格
| 功能 | 命令 | 说明 |
|---|---|---|
| 停止面板 | service bt stop |
最常用,彻底关掉,释放内存 |
| 启动面板 | service bt start |
重新激活面板 |
| 重启面板 | service bt restart |
修改配置后常用 |
| 查看状态 | service bt status |
看看它现在是开是关 |
6.系统的另外选择
alpine
Debian 系统 更换 cloud 内核
7.参考
https://www.nodeseek.com/post-1017-1
有什么支持alpine的一键脚本啊?






