一句话结论:可以上,但所有组件必须“瘦身 + 隔离 + 监控”三板斧到位,否则 2C3G 随时 OOM。
下文分三部分:可行性 → 安装 → 全套优化,按步骤抄即可。
1. 可行性评估
项目 | 现状 | 预计新增 Misskey | 风险 |
---|---|---|---|
CPU | 2 核,3×WordPress 平均 60% | Node 事件循环 + PostgreSQL 查询 ≈ +30% | 峰值可能打满 |
内存 | 3 GB,已用 1.8 GB | Misskey 800 MB + PostgreSQL 400 MB | 必须瘦身,否则 OOM |
磁盘 | 40 GB SSD 剩余 25 GB | 媒体文件 30 MB/日 × 2000 IP ≈ 2 GB/月 | 够用,但需定时清理 |
结论:能跑,但需严格资源隔离 + 参数优化。
2. 安装方案
2.1 在「前端机」装 PostgreSQL 13(与 MySQL 并存)
# 1. 官方源装 13
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update && sudo apt install -y postgresql-13 postgresql-client-13
# 2. 立刻瘦身
sudo systemctl stop postgresql
sudo nano /etc/postgresql/13/main/postgresql.conf
把下面参数贴进去:
# 内存(总内存 3 GB)
shared_buffers = 256MB
effective_cache_size = 768MB
work_mem = 2MB
maintenance_work_mem = 64MB
max_connections = 30
# 关闭不需要的功能
wal_level = minimal
archive_mode = off
max_wal_senders = 0
autovacuum = on # 小库还是要自动清理
log_statement = 'ddl' # 减少日志量
sudo systemctl enable --now postgresql
2.2 新建 misskey 用户与数据库
sudo -u postgres createuser -P misskey
sudo -u postgres createdb -O misskey misskey
2.3 安装 Misskey(不抢 80 端口)
# Node 20 + Yarn
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
sudo corepack enable && corepack prepare yarn@stable --activate
# 代码 & 构建
sudo mkdir /opt/misskey && cd /opt/misskey
sudo chown -R www-data:www-data /opt/misskey
sudo -u www-data git clone -b master https://github.com/misskey-dev/misskey.git .
sudo -u www-data yarn install --frozen-lockfile
sudo -u www-data yarn build
2.4 Systemd 服务
sudo nano /etc/systemd/system/misskey.service
[Unit]
Description=Misskey daemon
After=network.target postgresql.service
[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/misskey
ExecStart=/usr/bin/node index.js
Environment="NODE_ENV=production"
Restart=always
# 资源限制
LimitNOFILE=65536
MemoryMax=800M # 超过直接杀
CPUQuota=120% # 最多 1.2 核
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now misskey
2.5 宝塔面板反代新域名
- 网站 → 添加站点 → 域名
m.yourdomain.com
→ 纯静态 → SSL 强制 HTTPS - 反向代理 → 目标
http://127.0.0.1:3000
3. 全套压榨级优化
3.1 系统级
# zram 压缩交换区(防突发内存)
sudo apt install zram-config
echo 'PERCENT=50' | sudo tee /etc/default/zram-config
sudo systemctl restart zram-config
3.2 PostgreSQL 13 追加优化
# 重启生效
sudo systemctl restart postgresql
3.3 Nginx 1.26 共享资源
# /www/server/nginx/conf/nginx.conf 追加
worker_processes auto;
worker_rlimit_nofile 65535;
events {
worker_connections 4096;
use epoll;
multi_accept on;
}
http {
# 全局缓存
open_file_cache max=2000 inactive=20s;
open_file_cache_valid 30s;
gzip on;
gzip_types text/css text/javascript application/javascript application/json image/svg+xml;
}
3.4 PHP-FPM 8.2 资源压缩
# /www/server/php/82/etc/php-fpm.d/www.conf
pm = ondemand
pm.max_children = 20
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 6
pm.max_requests = 500
3.5 Redis 7.2 内存封顶
# /etc/redis/redis.conf
maxmemory 200mb
maxmemory-policy allkeys-lru
3.6 Misskey 级
# /opt/misskey/.config/default.yml 关键
clusterLimit: 1 # 单核
redis:
host: 127.0.0.1
port: 6379
db: 0
family: 4
db:
host: 127.0.0.1
port: 5432
db: misskey
extra:
max: 10 # 限制连接池
min: 2
idle: 10000
3.7 监控 & 自动重启
sudo apt install htop iotop
# 宝塔计划任务:内存>90% 时重启 misskey
*/10 * * * * root [ $(free | awk '/Mem/{printf "%.0f", $3/$2*100}') -gt 90 ] && systemctl restart misskey
3.8 日志轮转
sudo nano /etc/logrotate.d/misskey-custom
/opt/misskey/logs/*.log {
daily
rotate 7
compress
delaycompress
missingok
postrotate
systemctl reload misskey
endscript
}
4. 一句话总结
2C3G 再塞 Misskey,只要:
• PostgreSQL 13 极限 256 MB 内存
• Misskey 800 MB 封顶 + Systemd 限制
• Nginx/PHP/Redis 全降配 + zram 兜底
就能让 3×WordPress + Misskey 日 IP 7000 稳稳跑;再涨人就加钱升配吧。
没有回复内容