EXPLORE · 循迹而来

系统与网络

FOLLOW YOUR CURIOSITY

把同一个话题,读得更深。

这个话题下有 22 篇手记。

日志删了,磁盘空间为什么没回来

154 阅读

df 显示磁盘占用很高,du 却找不到大文件,可能是进程仍持有已删除的文件。用一个实测的 8 MiB Linux 小实验说明名字、inode 和文件描述符的关系,再给出 lsof 与 /proc 的核对方法,以及日志重新打开、轮转和空间恢复的验证步骤。

S3 上传成功但 ETag 和 MD5 对不上的原因

330 阅读

S3 文件上传成功后,ETag 与本地 MD5 不一致,并不必然意味着文件损坏。本文从单次上传、服务端加密与分段上传的差异出发,解释传统 Multipart ETag、整文件摘要和组合校验和的边界,并通过可运行的 Python 实验验证分段方式对结果的影响。随后给出 AWS CLI 上传、对象版本绑定、云端校验和读取与下载验证流程,梳理 Base64 编码、源文件变化、权限不足和合并响应处理等陷阱,帮助建立可追踪、可排障的文件完整性验证机制。

SSE与Nginx流式传输排障实战

269 阅读

AI 接口启用了流式输出,页面却仍要等待数秒才整段显示,问题未必出在模型。本文沿着应用写出、Nginx 转发、SSE 解析与前端消费四个环节展开排查,用可运行的 Java 探针及本地对照实验,说明响应缓冲开关为何不能代替证据。随后解析请求缓冲、心跳与超时、首字节与首个有效事件之间的差异,并补充断线重连、任务幂等和资源清理的设计边界,帮助开发者建立从复现、定位到修复验证的完整方法,避免盲目增加超时或全局关闭缓冲。

用PSI看懂Kubernetes资源压力

300 阅读

线上接口出现延迟尖刺时,我们通常先看 CPU、内存和磁盘使用率。但这些指标只能说明资源“用了多少”,无法直接回答业务线程“因为资源不足等待了多久”。Linux PSI 从任务停顿时间出发,量化 CPU、内存和 I/O 竞争对工作负载造成的真实影响。本文将结合 Linux、cgroup v2、Kubernetes、Prometheus 和 Java 服务排障,讲清 PSI 指标的读取方式、关联分析思路、告警策略以及常见资源问题的优化方向。

CXL 4.0如何重构内存扩展与资源池化

269 阅读

传统服务器内存长期绑定在CPU插槽和DDR通道上,容易出现部分机器闲置、部分机器容量不足。CXL通过CXL.io、CXL.cache和CXL.mem,将处理器、加速器与外接内存纳入一致性互连,并支持扩展、池化和动态分配。本文解析CXL 4.0的128 GT/s链路、Bundled Port与RAS增强,说明Linux如何将CXL内存映射为DAX或System RAM,并讨论数据库、AI及Java服务采用分层内存时的适用场景、性能边界与上线检查项。

用Linux DAMON看懂冷热页与主动回收

301 阅读

传统内存监控能告诉我们进程占用了多少内存、系统是否出现压力,却很难回答哪些页面正在频繁使用、哪些页面长期闲置。Linux DAMON 通过区域化采样、动态合并与拆分,在可控开销下持续刻画内存访问频率和冷热变化;DAMOS 进一步把观测结果转化为统计、回收、LRU 优先级调整和内存迁移策略。本文从原理、工具对比、实战命令到生产灰度方案,讲清如何用 DAMON 定位无效常驻内存,并降低直接回收、kswapd 抖动和延迟尖峰风险。

Linux sched_ext如何用eBPF重构CPU调度

278 阅读

Linux 通用调度器擅长兼顾公平与吞吐,却不了解哪些线程位于业务关键路径。sched_ext 自 Linux 6.12 进入上游后,允许开发者使用 eBPF 编写 CPU 调度策略,并通过用户态程序动态加载、替换和回退。本文从 select_cpu、enqueue、dispatch 与 DSQ 讲清任务调度链路,结合 Meta 广告服务和 GPU 训练机群案例分析工作负载定制调度的价值,同时说明它与 Kubernetes、cgroup CPU 权重及限额的兼容风险,并给出实验、压测、灰度、监控与自动回滚方法,帮助团队判断何时值得将性能优化深入到操作系统调度器层。

WebAssembly服务端插件化终于补上关键一环

258 阅读

2026年发布的WASI 0.3,将async func、stream<T>与future<T>纳入WebAssembly组件模型的Canonical ABI,解决异步状态难以跨组件传播的问题。它简化HTTP、文件与Socket接口,使不同语言组件能够按统一契约组合,并以能力授权限制文件、网络和环境访问。本文梳理Wasm、组件模型与WASI的关系,分析其在插件系统、规则引擎和多租户扩展中的价值、局限,以及Java项目的渐进式落地路径。

Java上下文传播正在改变

318 阅读

随着 Java 应用从传统 CRUD 走向 AI Agent,userId、tenantId、traceId、conversationId 等上下文需要在更复杂的调用链与并发任务中稳定传播。JDK 25 正式定稿的 ScopedValue,为“上游绑定、下游只读、任务结束自动失效”的场景提供了比 ThreadLocal 更清晰的语义。本文结合虚拟线程、结构化并发与 Spring AI ToolContext,分析 ScopedValue 的设计原理、适用边界、异步传播限制及安全注意事项,并给出 Spring Boot 项目的上下文分层与迁移思路,帮助开发者重新理解 Agent 时代的 Java Context 设计。

Netty 4.2 用 io_uring 重构网络 IO

259 阅读

Netty 4.2 将 io_uring 从孵化模块升级为正式传输实现,使 Java 网络服务能够通过提交队列与完成队列批量交付 I/O。本文从 epoll 的就绪模型讲起,拆解 SQ、CQ、multishot 与缓冲区环,给出 Maven 依赖、运行时探测、三级回退和调优示例,并说明它与虚拟线程的边界。文章还分析 Docker seccomp、内核开关、原生库分类器与压测误区,帮助开发者判断 io_uring 是否适合生产环境。

Nginx线上配置https示例文件

1259 阅读

本文提供了一个完整的 Nginx HTTPS 配置示例。全局设置包括日志、连接数、文件发送等;在 `http` 块中定义日志格式和基本参数。`server` 块一监听 443 并启用 SSL,指定域名、证书路径、私钥,并通过 `proxy_pass` 将请求转发至后端 IP+端口,同时设置真实 IP 头。另设 80 端口 `server`,使用 `rewrite` 永久重定向所有请求到 HTTPS。最后通过 `include /etc/nginx/conf.d/*.conf` 加载其他配置文件。

计算机网络(一)

1397 阅读

本文系统介绍了网络分层模型与关键协议。先阐述OSI七层及其功能,再对比简化的五层TCP/IP模型。说明客户端通过URL确定协议,指出TCP属传输层、HTTP/FTP属应用层。详细解析TCP报文结构、流量与拥塞控制,概述HTTP特性与常用方法、FTP工作方式及状态管理。介绍传输层的复用/分用、端口及流量、拥塞控制,列举常见应用层协议。最后说明TCP/IP四层结构的开放、硬件无关优势,并解释ARP的工作原理和缓存机制。