df 说磁盘 100%,du 说只用了一半:被 rm 了却还“活着”的日志文件
磁盘告警 100%,du 加起来却只有一半。原来是日志被 rm 了,Java 进程还握着文件句柄。用 lsof +L1 找到它,/proc/PID/fd 截断止血,再顺带讲 inode 耗尽、大文件定位和 logrotate copytruncate。
磁盘告警 100%,du 加起来却只有一半。原来是日志被 rm 了,Java 进程还握着文件句柄。用 lsof +L1 找到它,/proc/PID/fd 截断止血,再顺带讲 inode 耗尽、大文件定位和 logrotate copytruncate。
备份脚本手敲一切正常,放进 crontab 却悄无声息地不执行。逐条排查 cron 服务与日志、PATH 环境变量、百分号转义、时区、权限、输出重定向、flock 防重叠、时间漂移,并对比 XXL-JOB。
一次上线连踩两个 Nginx 默认值:client_max_body_size 默认 1m 导致上传 413,Spring Boot multipart 与多层代理要逐层放开;WebSocket 每 60 秒断线,缺 Upgrade 头且 proxy_read_timeout 默认 60s。附 curl 复现命令与心跳方案。
前端喊“接口 502”,后端说“我这儿好好的”。本文讲清 502(上游连不上/被掐断)与 504(上游超时)的区别,用 error.log 原文加自定义 access_log 三个 upstream 变量定位问题,并解释 keepalive、重启瞬间 502 与 proxy_next_upstream 的坑。
某天早上全站弹“连接不是私密连接”,根因是 HTTPS 证书过期。用 openssl s_client 和 curl -v 看证书有效期与证书链,梳理 certbot/acme.sh 自动续期失败的常见原因,并给出提前 30 天告警的检查脚本。
一份查漏补缺性质的 Java 基础笔记:String 常量池与不可变性、泛型擦除与通配符、异常体系与最佳实践、反射注解的代价、JDK 8 时间 API、equals/hashCode 契约、Stream 与 Optional 的正确用法。
把 ArrayList、HashMap、ConcurrentHashMap、LinkedHashMap、PriorityQueue 的底层原理、扩容机制和选型建议讲清楚,重点记录 ConcurrentHashMap 的 size 不准、HashMap 死循环、subList 导致 OOM、 Arrays.asList 不可变这些真实踩过的坑。
从 ThreadPoolExecutor 的执行流程讲到生产环境线程池打满的完整排查链路:核心参数怎么算、JUC 常用组件怎么选、Executors 为什么不能用、CompletableFuture 默认线程池的坑,以及一次千万级短信发送任务把线程池压满的真实复盘。
一份能照着操作的 JVM 笔记:运行时数据区、对象创建与回收、G1/ZGC 怎么选、常用启动参数、jstat/jmap/jstack/arthas 的用法,以及一次大报表导出把堆撑爆的真实排查过程。
从 BIO、NIO、AIO 三种模型讲到 Selector、Buffer、Channel 与零拷贝原理,配上文件读写、大文件传输、Socket 编程的实用代码和命令,最后落到 Linux 文件描述符耗尽这类真实生产问题的排查。