适合人群:Halo 用户 / 小内存服务器 / Java 初学运维
目标:照着做,不踩坑
一、环境说明
服务器内存:2GB
系统:Linux
应用:
Halo 2.x(Spring Boot)
MySQL
Nginx
1Panel
二、问题表现
内存长期 >70%
available <300MB
CPU 偶发 100%
页面偶尔卡顿
三、修复步骤(按顺序执行)
Step 1:确认内存压力
free -h
ps aux --sort=-%mem | head
Step 2:启用 swap + 降低 swappiness
echo 'vm.swappiness=10' | tee /etc/sysctl.d/99-swappiness.conf
sysctl -p /etc/sysctl.d/99-swappiness.conf
Step 3:MySQL 小内存配置
innodb_buffer_pool_size = 256M
max_connections = 50
performance_schema = OFF
Step 4:限制 JVM 内存(关键)
DefaultEnvironment="JVM_OPTS=-Xms128m -Xmx256m -XX:MaxMetaspaceSize=128m"
systemctl daemon-reexec
Step 5:插件治理
删除:
搜索组件
评论互动增强
AI 类插件
保留:
RSS
Sitemap
应用市场
四、最终状态
available >500MB
Java RSS ≈ 300MB
MySQL RSS ≈ 200MB
swap 仅兜底
五、结论
2核2G服务器跑 Halo,
核心不是升级机器,而是限制 JVM + 控制插件。