RabbitMQ 的 Unacked 越攒越多,连接还被 blocked 了:一条忘了 ack 的消息引发的血案
管理界面里 Unacked 涨到 12 万,内存水位告警、生产者连接被 blocked。用 rabbitmqctl list_queues / list_channels / list_connections 定位忘记 ack 的消费者,讲清 prefetch、内存与磁盘水位流控、死信与 TTL,并给出止血与根治配置。
管理界面里 Unacked 涨到 12 万,内存水位告警、生产者连接被 blocked。用 rabbitmqctl list_queues / list_channels / list_connections 定位忘记 ack 的消费者,讲清 prefetch、内存与磁盘水位流控、死信与 TTL,并给出止血与根治配置。
老 JDK 不识别 cgroup,容器限 2G 却按宿主机 64G 算堆,还按 32 核起线程,结果被 OOMKilled 或越跑越慢。讲清 UseContainerSupport、MaxRAMPercentage、堆外开销、cgroup v1/v2 文件,以及容器里 jstack/jmap 的正确姿势。
容器写挂载目录报 Permission denied,根因常是 UID 不一致,也可能是 SELinux 或只读挂载。顺带整理容器时区不对、构建缓存导致改了代码镜像没更新两个小坑,每条都给出复现现象与 id、ls -ln、docker exec 排查命令。
docker ps 里一个容器永远显示 Restarting,日志什么都没有。docker inspect 看 OOMKilled 与 ExitCode 137,配合 docker events、stats、dmesg 定位内存超限,讲清 restart policy 如何放大故障、-m 与 swap 的关系,附 exit code 速查表。
凌晨磁盘告警,df 显示根分区 100%,罪魁是 /var/lib/docker。用 docker system df -v、du 逐层下钻,定位到 json-file 日志无限增长,讲清 max-size/max-file 配置、docker system prune 各选项的风险(--volumes 会删数据)与构建缓存清理。
容器访问宿主机 MySQL 报 Connection refused,同一 compose 里 localhost 也不通。梳理 host.docker.internal 与 host-gateway、服务名 DNS、-p 与 EXPOSE、默认 bridge 无 DNS、ufw 被 Docker 绕过,附 docker network inspect 与 nsenter 排查命令和网络拓扑图。
top 里一个名字怪异的进程吃满 CPU,杀了又活。本文从防御视角复盘一次挖矿木马应急:定位进程、/proc/PID/exe、外连矿池、cron 与 authorized_keys 持久化、日志溯源,以及清理与加固清单。
服务凌晨无声消失,没有 hs_err 文件也没有 OutOfMemoryError。dmesg 里一行 Out of memory: Killed process 揭开真相:JVM 堆加堆外内存把机器吃光,被内核枪毙。附排查命令、oom_score 原理和堆参数预留算法。
监控里 load 飙到几十,top 里 CPU 却几乎空闲。原来 Linux 的 load 也统计 D 状态进程。用 vmstat、iostat -x、pidstat -d、iotop 和 ps 找出是磁盘慢还是 NFS 卡死,并讲清 await 与 %util 怎么读。
接口突然大面积报 Too many open files。先分清 ulimit、limits.conf、systemd LimitNOFILE 与容器的差异,再用 lsof、ss 统计连接状态,定位到 CLOSE_WAIT 堆积,根因是 HttpClient 响应没关闭导致连接泄漏。