OOM、cgroup 与资源限制:进程为什么会被系统突然杀掉
线上最让人困惑的一类问题,就是程序没有明显报错,却突然没了。很多时候,罪魁祸首不是代码主动退出,而是系统在内存压力下触发 OOM,或者容器 / 服务所在的 cgroup 资源限制被打穿。 这类问题难的地方在于:从应用视角看,症状往往只是“进...
线上最让人困惑的一类问题,就是程序没有明显报错,却突然没了。很多时候,罪魁祸首不是代码主动退出,而是系统在内存压力下触发 OOM,或者容器 / 服务所在的 cgroup 资源限制被打穿。 这类问题难的地方在于:从应用视角看,症状往往只是“进...
很多人接触 Nginx 的方式,都是先从零碎需求开始:有人是因为线上慢了,有人是因为接口不一致,有人是因为部署和发布出了问题。于是学到的内容也常常是碎的,今天补一篇索引,明天补一个缓存击穿,后天再看一个排障命令。这样当然也能积累知识,但很容...
真正到了线上,问题不会按章节出现。你看到的往往是接口变慢、服务超时、容器重启、机器报警、磁盘写满、连通性异常,然后需要在很短时间内做出判断。 所以 Linux 系统能力最终必须回到排障思路本身:先看现象,先定层次,先找对象,再不断收窄范围。...
很多人第一次真正停下来补“Nginx 简介”,往往并不是为了系统学习,而是因为工作里已经隐约感觉这里有坑。可能是同事在说这个词时你大概听得懂,但真要自己解释就有些模糊;也可能是系统已经出现了一些现象,让你意识到这层知识不能再只停留在“看过教...
很多人学“配置文件结构入门”这类机制主题时,最容易有一种错觉:好像自己在学一堆抽象原理,离真实工程很远。可只要你把它放回系统运行过程里,就会发现它其实一直在回答非常具体的问题:请求为什么会这么走、数据为什么会这么看见、性能为什么会在这里变差...
很多人第一次真正停下来补“安装与最小实验”,往往并不是为了系统学习,而是因为工作里已经隐约感觉这里有坑。可能是同事在说这个词时你大概听得懂,但真要自己解释就有些模糊;也可能是系统已经出现了一些现象,让你意识到这层知识不能再只停留在“看过教程...
当你开始学“server_name 与 location”这类设计主题时,通常意味着单纯会操作已经不够了。系统开始变大、对象开始变多、协作开始变复杂,你会越来越频繁地遇到一种情况:看起来好像每个方案都能做,但真正难的是判断哪种更适合当前阶段...
当你开始学“静态资源托管”这类设计主题时,通常意味着单纯会操作已经不够了。系统开始变大、对象开始变多、协作开始变复杂,你会越来越频繁地遇到一种情况:看起来好像每个方案都能做,但真正难的是判断哪种更适合当前阶段、当前约束和当前团队。 这一篇放...
很多人第一次真正停下来补“反向代理入门”,往往并不是为了系统学习,而是因为工作里已经隐约感觉这里有坑。可能是同事在说这个词时你大概听得懂,但真要自己解释就有些模糊;也可能是系统已经出现了一些现象,让你意识到这层知识不能再只停留在“看过教程”...
当你开始学“请求头与真实客户端 IP”这类设计主题时,通常意味着单纯会操作已经不够了。系统开始变大、对象开始变多、协作开始变复杂,你会越来越频繁地遇到一种情况:看起来好像每个方案都能做,但真正难的是判断哪种更适合当前阶段、当前约束和当前团队...