2010 年,我还是一个有追求的程序员。在境外买了台虚拟主机,用来部署个人网站和 WordPress 技术博客,当然,还有些别的用途,你懂的。
后来工作是越来越忙,我也再没心思去打理。每年都要续费 225 美刀,折合一千多人民币,哎,咬咬牙续了,不忍心把网站关掉。
再说了,这年头也没人去写技术博客了,真要写,也是奔着知识付费去的。
看了阿里云的轻量级服务器,2 核 1 GB 内存,一年也才 400 多块,能省一千块钱。这年头,钱难赚,蚊子腿那也是肉啊!
于是,我在印象笔记里用 AI 帮我写了一篇文章:《WordPress 迁移 Bluehost 到阿里云 ECS 流程指南》。
当我吭哧吭哧地迁移完,发现大家早都不玩 WordPress 了,改用 Hexo。
以前我用 Emacs Muse 搭建一个 wiki,现在流行用 Outline 做私有部署。
以前在 Bluehost 上折腾 Rails 应用,部署很麻烦,最终放弃。现在阿里云主机,装啥都行,一个 Nginx 前置代理服务器,可以配置许多域名,然后转发到 Rails、Node.js 后台应用,简直不要太爽了。
有 AI 加持,整个迁移比较顺利,就是编译 Ruby 卡了很久,折腾了一个晚上才算搞定,特记录一下。
下面几段是排障记录,想自己折腾的朋友可以直接照抄,不感兴趣的跳过。
先确认是不是真的被 OOM 杀了,另开一个终端,运行:
dmesg -T | grep -i -E 'oom|killed process'
如果输出里有类似 Killed process ... (cc1) 的记录,就证实了是内存问题。
轻量服务器内存如果不到 2 GB,编译 Ruby 时会失败。先看剩余内存:
free -h
可用内存低于 1 GB 时加上 2 GB 交换分区:
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
grep -q '/swapfile ' /etc/fstab || echo '/swapfile none swap sw 0 0' >> /etc/fstab
创建之后确认它已经挂上:
swapon --show
free -h
swapon --show 应列出 /swapfile,大小约 2 GB。输出为空就再执行一次 swapon /swapfile。
交换分区挂上之后,编译 Ruby 仍可能被系统杀掉,同时 free -h 里 Swap 的已用一直是 0。这通常是 vm.swappiness 为 0 或很低,内核不肯把内存换出去。查看当前值,改成 60,并让重启后仍然生效:
cat /proc/sys/vm/swappiness
sysctl vm.swappiness=60
echo 'vm.swappiness=60' > /etc/sysctl.d/99-swappiness.conf
编译期间再看 free -h。Swap 的已用开始增加,交换分区才算真正生效。
有了 AI,做运维的门槛低多了。以前得准备很久才敢动手,现在可以跟 AI 共创:先做一个详细的计划,再照着实施。遇到问题,直接复制给 AI,让它帮你解决,不用像以前那样 Google 到处搜。
哎,时代已经大变样了!