DavidO
(David)
1
我正尝试重新烘焙 45k 帖子,因为我更改了 S3 CDN URL,但它一直耗尽内存并被终止。
我阅读了这篇关于设置交换文件(swapfile)的文章……
前两个命令运行正常……
-
创建一个空的交换文件
install -o root -g root -m 0600 /dev/null /swapfile
-
写入一个名为 ‘swapfile’ 的 2GB 文件
dd if=/dev/zero of=/swapfile bs=1k count=2048k
但在 mkswap /swapfile 时出现错误……
mkswap 错误 swapfile 已挂载,无法创建交换空间
我尝试了以下方法……
swapoff /swapfile && rm /swapfile
并收到此错误……
swapoff: 不是超级用户
我在 Digital Ocean Droplet 上,所以我想我没有必要的权限?
遇到这些障碍后,我尝试运行以下命令来重新烘焙未烘焙的帖子……
rake posts:rebake_uncooked_posts
它会运行几百个,如果幸运的话,可能会有几千个,然后又被终止。在昨天一直看着它之后,我只完成了大约一半。
是否有办法运行一个有节流的重新烘焙命令?我不在乎它需要多长时间,过夜或任何时间,我只是希望它不要再失败了。
非常感谢任何帮助。
DavidO
(David)
2
说来也怪,在我写完所有这些内容时,我又让未完成的运行了一次。我和一些朋友出去吃了顿悠长的午餐,回来时它已经 100% 完成了。我不确定是不是交换文件(swapfile)终于开始工作了,还是仅仅因为使用率低而恰好赶上了时机,但是……
终于完成了!
也许如果有人有答案,可以帮助到其他人或我下一次尝试。
那看起来不对。你在遵循哪些说明?
而且你为什么要容器内部创建交换空间?交换空间应该在宿主机上创建,而不是在容器内部。
DavidO
(David)
6
因为我只知道我在做什么一点点。
所以是在 ubuntu: 基础级别而不是在 ubuntu:/var/discourse 或 ubuntu-app:/var/www/discourse 级别创建?
关于重新烘焙(rebake)限速有什么想法吗?
1 个赞
我从没见过重新烘焙被限速,它是异步的,它会将任务排队,然后在后台处理。
1 个赞
DavidO
(David)
8
好的,谢谢。我的已经完成了重新烘焙,所以我觉得自己很幸运,不再折腾它了。
警告
:不要在生产站点上盲目操作,很有可能出现问题且没有真正的恢复方法。
不,它不是 ubuntu: 级别。
在尝试创建交换分区之前,你是否执行了 ./launcher enter app?如果是,那就是你不应该做的事情。
当你首次登录到你的服务器时,你是在主机上;当你进入 app 时,你是在容器内部执行操作。
交换分区需要在主机上创建,应用程序生活在容器内部,这是你将访问以运行 rebake 命令的地方。
DavidO
(David)
10
好的,感谢您的指导。
我们的论坛只是一群朋友的聚集地,而且有很好的备份,所以如果我把它停用一两周,我们就只能忍受 GroupMe 了。 
pfaffman
(Jay Pfaffman)
11
这意味着您已经有了一个交换文件,它被称为 /swapfile,并且正在使用中。
如果您想扩大它,可以停止您的容器,然后卸载它,接着使用那个 dd 命令来扩大它,然后再使用 mkswap 命令。
如果其他人看到此内容,我通常的做法是使用 grep swap discourse-setup 来查看其中的命令。这是一种稍微简单一些的操作方法。
3 个赞
Canapin
(Coin-coin le Canapin)
13
我不知道你们怎么样,但在一个漫长的重新烘焙过程中,我反复出现内存不足的情况。创建 2 GB 的交换空间有所改善(更多的帖子被重新烘焙),但过了一会儿仍然出现 OOM(内存不足)。将交换空间增加到 4 GB 后,我就能够重新烘焙我所有的帖子了。
除了这篇指南 Create a swapfile for your Linux server 之外,我对交换文件一无所知,但 ChatGPT 足够了解情况,可以帮助我顺利地增加我的交换空间。
3 个赞
DavidO
(David)
14
我遇到的一个问题是我不清楚哪些工作需要在哪个区域完成。是在容器内部还是外部,或者是在应用程序内部还是外部。我尽量做好笔记,并为将来会再次使用的东西创建心智捷径。但正当我开始理解它时,我需要做的事情就完成了,而且我可能在接下来的 6 到 12 到 18 个月内都不会再碰它。然后我就得重新学习一遍。
听起来像每个系统管理员的整个生命故事 
我的解决方案是做笔记,然后在 meta 上创建一个简短的操作指南
我把它设为维基,这样其他人如果发现错误或疏忽,就可以编辑它,下次我需要做同样的事情时……
1 个赞