Linux cgroups 资源限制实战
前言" 容器原理篇说过 cgroup 是容器的三大支柱之一,这篇把它单独拿出来亲手玩透——不用 Docker,直接用内核的 cgroup 文件系统给任意进程上"资源紧箍咒"。 ...
前言" 容器原理篇说过 cgroup 是容器的三大支柱之一,这篇把它单独拿出来亲手玩透——不用 Docker,直接用内核的 cgroup 文件系统给任意进程上"资源紧箍咒"。 ...
前言 性能工具篇讲了"怎么用",这篇讲"怎么破案"——一个 CPU 告警的完整排查复盘,还原每一步的推理过程。 一、案发 22:14 告警: prod-api-03 CPU > 90%, 持续 5 分钟 影响: 该节点上的服务 P99 延迟 300ms → 2.8s 二、第一现场:top 全景 top # 按 P(CPU排序)按 1(展开核) load average: 14.2, 12.8, 9.5 ← 8核机器, load 14 明显过载 %Cpu(s): 92.3 us, 5.1 sy, 0.0 wa, 0.0 id, 0.0 st ▲ └ 92% 是 us(用户态)! ← 关键线索①: 应用在烧CPU, 不是内核/IO PID USER %CPU %MEM S COMMAND 8473 app 780.0 8.2 R java ← 元凶进程(多线程吃满约8核) 9102 app 2.1 3.1 S sidecar 推理: ...
前言 日志说不清、ping 测不明的问题,最后都要靠看包。tcpdump 是网络排查的显微镜——这篇从过滤语法到典型故障的"包形态",练出直接读包排障的能力。 ...
前言 服务器卡在启动界面进不去系统时,看懂启动流程就是看懂排障地图。这篇从固件到 shell,一步步走完 Linux 的"出生过程"。 一、总览:六个阶段 ① 固件自检 (BIOS/UEFI) ▼ ② 引导加载 (GRUB2) ▼ ③ 内核加载 (vmlinuz + initramfs) ▼ ④ PID 1 (systemd 启动) ▼ ⑤ 并行拉起服务 (target + 依赖) ▼ ⑥ 登录 (getty / sshd) 二、阶段一:固件(BIOS/UEFI) BIOS(老) UEFI(现代) 按 MBR 磁盘前512字节引导 读 FAT 格式的 ESP 分区里的 .efi 文件 │ │ ▼ ▼ MBR: 引导代码446B + 分区表64B /boot/efi/EFI/.../grubx64.efi + 魔数 55AA # 看自己的机器是哪种 [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS # UEFI 下看启动项 efibootmgr -v # 固件层常见故障: 启动顺序错了 / 磁盘没认出来 # → 进 BIOS Setup 检查 Boot Order 与磁盘是否识别 三、阶段二:GRUB2 引导 GRUB 的任务:找到内核与 initramfs,把控制权交出去。 ...
前言 “最小权限原则"落地的第一站就是账号体系:日常用普通用户 + 按需 sudo,而不是人人 root。这篇把用户、组、sudo 的管理一次讲全。 ...
前言 压测时出现 Too many open files、大量 TIME_WAIT、连接队列溢出——这些都不是应用 bug,是内核默认参数太保守。生产服务器上线清单里,sysctl 调优应有一席之地。 ...
前言 mkfs 时的灵魂拷问:ext4 还是 xfs?两者都是成熟的日志式文件系统,但性格差异明显。这篇从原理到选型讲清楚。 一、文件系统要解决什么 数据的逻辑组织 + 崩溃一致性: 应用写入 "hello" │ ▼ 文件系统: 把数据拆成块 + 维护元数据(inode 表、目录项、空闲块位图) │ ▼ 日志(Journal): 先把"要做的修改"记一笔, 再真正落盘 │ 断电重启后: 重放日志或回滚 —— 保证一致性 ▼ 磁盘块 inode:存文件元数据(权限、时间戳、数据块指针),不含文件名。经典问题——“磁盘有空间但创建不了文件”= inode 耗尽(海量小文件): ...
前言 Linux 防火墙经历了 iptables → nftables → firewalld(前端)的演进。现代 RHEL 系默认 firewalld(底层实为 nftables),但老机器和容器网络里 iptables 依旧无处不在。两个都要会。 ...
前言 “服务器好卡"是运维最常收到的一句话。定位性能瓶颈的标准流程:先看全局(top),再分维度下钻(CPU/内存/IO/网络)。这篇讲前三者的经典工具。 ...
前言 一台公网服务器上线几小时,/var/log/secure 里就会堆满爆破记录。SSH 是大门,这篇是一份可以直接照抄的加固清单。 一、先看看有多少人在撬门 # 今天的爆破尝试 grep "Failed password" /var/log/secure | wc -l # 谁在撬(来源 IP Top10) grep "Failed password" /var/log/secure \ | grep -oE "from [0-9.]+" | sort | uniq -c | sort -rn | head # 用哪些用户名试 grep "Failed password" /var/log/secure | grep -oE "invalid user \S+" | sort | uniq -c | sort -rn | head 看完这些数字,你会立刻想做下面所有事。 ...