21. 让每个编程代理会话运行在任务结束即被清理的 cgroup 中
他们做了什么
这位开发者排查发现,系统大量使用交换空间,是因为 /tmp 是基于内存的 tmpfs,以及之前的编程代理派生后又遗弃的进程。他们添加了一个频繁运行的任务,删除大约两小时未被使用、且没有被任何命令占用的临时文件。他们还改造了自己的代理启动器,让每个会话都在独立的 cgroup 中启动,任务结束时杀掉其中的所有进程。
结果如何
来源没有给出任何测量数据。它称清理任务和按会话划分的 cgroup 解决了交换空间占用和遗留进程的问题,但这只是一条简短的论坛评论,没有前后对比数据。
需要知道
在怪罪代理之前,先确认交换空间的占用是否真的来自基于内存的 tmpfs /tmp;清理任务只会删除没有被打开的文件。
你可以这样尝试
在我位于 [路径] 的仓库中,为 [Linux 发行版或 systemd 环境] 写一个小型代理启动脚本,让每个编程代理会话都在独立的 cgroup 中启动,任务完成或失败时杀掉该 cgroup 中所有遗留的进程。再添加一个定时任务,删除 [临时目录] 中超过 [数量] 小时的陈旧文件。最后运行一个会留下后台进程的测试会话,证明它会被清理掉。在删除任何文件或杀掉测试之外的进程之前,先给我看会清理哪些内容,等我批准。
评论
0分享你对这一章的想法