linux技术文章
-
/run 或容器临时目录写满时,df -h 看到的 tmpfs 并不等于一块独立硬盘。本文用 findmnt、df -h、df -i 和 mount 参数核对 tmpfs 的挂载、容量、inode 与内存边界。273 收藏 -
用 openat2 的 resolve 约束限制不可信相对路径,分清 RESOLVE_BENEATH 与 RESOLVE_IN_ROOT 的边界,并处理 EXDEV、EAGAIN 和内核兼容性验收。356 收藏 -
文章 · linux | 1个月前 | Linux · 热更新 · 文件描述符 · Linux io_uring 固定文件热更新 draining IORING_REGISTER_FILES_UPDATE
围绕 io_uring 固定文件热更新,说明稀疏槽、IORING_REGISTER_FILES_UPDATE 和 draining 状态如何配合,避免旧请求与新文件交错。226 收藏 -
从 IOSQE_FIXED_FILE、固定文件索引和稀疏表入手,定位 io_uring 请求返回 EBADF 的原因,并用 draining 到 ready 的切换边界完成在线更新验收。102 收藏 -
用 pidfd_open 获取稳定的进程引用,配合 poll 观察退出、waitid 回收状态,解决长驻监控器因 PID 复用误判进程身份的问题。293 收藏 -
从 IN_Q_OVERFLOW 这条证据入手,区分 inotify 事件队列溢出、watch 数量耗尽和应用消费过慢,再给出 max_queued_events、max_user_watches 的核对、修复与恢复流程。428 收藏 -
服务明明还有内存,却突然无法创建新线程或子进程,优先检查 cgroup v2 的 pids.max、pids.current、pids.peak 和 pids.events,再回到服务管理器的 TasksMax=确认限制来源。本文给出一套可回滚的定位顺序。473 收藏 -
用一个最小 TCP 事件循环说明 epoll 边沿触发为什么会漏读、什么时候必须读到 EAGAIN,以及 EPOLLONESHOT 如何重新挂回监听队列。416 收藏 -
Linux 批处理拖慢线上服务时,可以用 cgroup v2 的 io.max 对指定块设备做读写字节或 IOPS 限流,再用 io.stat 对比限流前后的服务时延。本文给出设备映射、配置、观测和安全回滚步骤。453 收藏 -
Linux 批处理拖慢线上服务时,可以用 cgroup v2 的 io.max 对指定块设备做读写字节或 IOPS 限流,再用 io.stat 对比限流前后的服务时延。本文给出设备映射、配置、观测和安全回滚步骤。353 收藏 -
Linux 服务被 cgroup v2 限制后,先用 memory.high 做可恢复的内存限流,再用 memory.max 兜底,最后结合 memory.events 区分回收、节流和 OOM。本文用一个 worker 服务场景给出配置、观测和回滚步骤。486 收藏 -
Linux 机器重启后服务迟迟不能用,先别盯着单个进程猜原因。本文用关键依赖链命令拆出启动耗时和真正的等待点,再结合服务状态与 journalctl 验证是服务本身慢、依赖未就绪,还是启动顺序配置造成的延迟。113 收藏 -
Linux 机器重启后服务迟迟不能用,先别盯着单个进程猜原因。本文用关键依赖链命令拆出启动耗时和真正的等待点,再结合服务状态与 journalctl 验证是服务本身慢、依赖未就绪,还是启动顺序配置造成的延迟。382 收藏 -
容器或 unshare 环境里的挂载偶尔会出现在宿主机,根因常是 mount propagation 而不是命名空间失效。本文用 findmnt、/proc/self/mountinfo 和三种传播类型复现 shared、slave、private 的差异,给出安全验证与回滚顺序。252 收藏 -
文章 · linux | 1个月前 | 内存 · Linux · 运维排查 · Linux OOM cgroup v2 memory.events memory.current memory.max memory.high
Linux cgroup v2 出现内存告警时,不要只盯着 memory.current。本文用 memory.events、memory.events.local、memory.high 和 memory.max 组成证据链,区分回收压力、硬限额命中与 OOM,并给出可复查的命令顺序。456 收藏