最近想在云服务器上跑个 AI Agent,手边刚好有一台阿里云 2 核 2G 的 ECS 闲置。OpenClaw 这个项目看着挺有意思——支持飞书、微信、钉钉多平台接入,能远程遥控 Agent 干活。问题是:2G 内存够不够?
先说结论:够用,但得做点优化。飞书插件没问题,微信插件会吃掉大量内存,需要动点手脚。
- 环境准备与一键安装
- 连接飞书:一次成功
- 微信插件:内存爆了
- 解决方案一:增大 Node.js 堆内存
- 解决方案二:增加 Swap 空间
- 两个方法一起上
- 吐槽:GitHub 在阿里云上慢到怀疑人生
机器配置:
阿里云现在提供了 OpenClaw 的一键部署方案,在云市场搜索「OpenClaw」或「小龙虾」就行,省去了手动装 Node.js、配环境的麻烦。一键购买后,系统会自动装好 OpenClaw 和所有依赖。
如果你想手动装,也不复杂:
npm install -g openclaw openclaw init
按提示填好 API Key 和基本配置,Gateway 就能跑起来了:
openclaw gateway --port 18789
看到那只龙虾 logo 出来,基本就成功了。
我这次图省事直接用了一键部署,省了不少折腾环境的时间。
飞书插件的配置比较简单。在 OpenClaw 配置文件里添加飞书应用凭证,设置好事件订阅地址,重启 Gateway 就行了。
飞书插件加载后的日志:
[plugins] feishu_doc: Registered feishu_doc, feishu_app_scopes [plugins] feishu_chat: Registered feishu_chat tool [plugins] feishu_wiki: Registered feishu_wiki tool [plugins] feishu_drive: Registered feishu_drive tool [plugins] feishu_bitable: Registered bitable tools
飞书这边响应很快,发消息过去基本秒回。2 核 2G 跑飞书插件毫无压力,内存占用大概在 300-400MB 左右,完全可控。
这时候我以为事情就这么简单——直到我装了微信插件。
微信插件 openclaw-weixin 放在 ~/.openclaw/extensions/ 目录下。装上之后重启 Gateway,看起来一切正常:
[plugins] plugins.allow is empty; discovered non-bundled plugins may auto-load: openclaw-weixin (/root/.openclaw/extensions/openclaw-weixin/index.ts).
插件被发现了,开始加载。然后过了大概 20 秒——
<--- Last few GCs ---> [3347:0x70a8000] 22751 ms: Mark-Compact 831.6 (852.3) -> 829.5 (853.3) MB, pooled: 0 MB, 1011.10 / 0.00 ms (average mu = 0.098, current mu = 0.009) allocation failure; scavenge might not succeed <--- JS stacktrace ---> FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
好家伙,直接 OOM 了。Node.js 进程吃了 800 多 MB 内存,触发了堆内存限制,然后 V8 引擎直接自杀。
2G 内存的服务器,系统本身吃掉一部分,再加上 OpenClaw 和飞书插件,微信插件一上来就撑爆了。
Node.js 默认的堆内存上限大概是 1.5GB 左右(取决于版本和系统)。我们可以通过 NODE_OPTIONS 环境变量来提高这个限制:
echo 'export NODE_OPTIONS="--max-old-space-size=4096"' >> ~/.bashrc source ~/.bashrc
这行配置告诉 V8 引擎:"你可以用最多 4GB 的堆内存"。当然 2G 物理内存是装不下 4GB 的,但配合下面的 Swap,就能让系统在内存紧张时把不活跃的数据换到磁盘上。
修改后重启服务:
systemctl --user restart openclaw-gateway.service
2G 物理内存确实捉襟见肘。Linux 的 Swap 机制可以把磁盘空间当内存用,虽然慢,但至少不会 OOM。
创建一个 2GB 的 Swap 文件:
# 创建 swap 文件 sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 开机自动挂载 echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
验证 Swap 是否生效:
free -h
输出大概是这样的:
total used free shared buff/cache available Mem: 1.9Gi 1.2Gi 200Mi 10Mi 500Mi 500Mi Swap: 2.0Gi 300Mi 1.7Gi
Swap 生效后,系统多了 2GB 的虚拟内存。虽然磁盘 IO 比内存慢几个数量级,但对于 Agent 这种间歇性工作的场景,完全够用。
单独用任何一个方法可能都不够稳。增大堆内存 + 增加 Swap 组合使用才是正解:
NODE_OPTIONS="--max-old-space-size=4096"告诉 Node.js 可以用更多内存- 2GB Swap 为物理内存提供溢出空间
- 系统在内存紧张时自动把不活跃的页面换到 Swap
这样配置之后,重启 Gateway,微信插件终于加载成功了:
[plugins] openclaw-weixin: WeChat bridge connected
飞书 + 微信同时在线,内存占用在 1.2-1.5GB 之间,加上 Swap,稳稳当当。
最后说一个跟 OpenClaw 无关但让人崩溃的事:在阿里云 ECS **问 GitHub。
npm install 的时候,各种包从 GitHub 下载,那个速度……1Mbps 的带宽本来就寒酸,GitHub 的连接还时不时就超时、重置。有个依赖包下载了 8 次才成功,每次超时等 30 秒。
如果你也遇到这个问题,几个建议:
- npm 换源:
npm config set registry https://registry.npmmirror.com - GitHub 文件用代理:
ghfast.top之类的国内加速 - 带宽别省:至少 5Mbps 起,1Mbps 是给自己找罪受
这大概是阿里云最让人无语的地方——国内访问 GitHub 的体验取决于你的运气和代理质量。
作者: TheAIEra
来源: 公众号:AI 人工智能时代
本文首发于 AI 人工智能时代,转载请注明出处。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/265019.html