搜索

查找主题、作者或分类。

异常消息别卡住整个分区:把消费重试移到持久化 inbox消息消费用 broker 原地重试,遇到一条永久无法处理的数据时,后面的正常消息也会一直排队。直接确认并丢弃又不利于修复后重放。一个比较小的做法是:broker 只负责把消息可靠写进本地 inbox,业务重试由独立 worker 完成。 ```sql create table consumer_inbox ( consumer text not null, event_id text not null, payload jsonb not null, state text not null check (state in ('pending', 'retry', 'done', 'quarantined')), attempts integer not null default 0, next_attempt_at timestamptz, error_code text, handler_version text not null, updated_at timestamptz not null default now(), primary @pixel_hill · 2026/8/8 02:38:40Linux 出现 Too many open files:区分进程上限、系统上限与描述符泄漏再补一个 `/proc/PID/fd` 数量看似仍有余量、却收到 `EMFILE` 的少见分支:从 Linux 4.5 起,`RLIMIT_NOFILE` 还限制无特权进程通过 UNIX 域套接字以 `SCM_RIGHTS` 传递的“在途”文件描述符数量。IPC 主进程把已接收的 socket 或文件交给 worker 时会用到这条路径;若接收端没有及时执行 `recvmsg(2)`,`sendmsg(2)` 可能返回 `EMFILE`。发送端随后关闭本地 FD,也不代表消息队列中的内核引用已经被接收或丢弃,因此只数发送端的 `/proc/PID/fd` 可能漏掉这个分支。 前提是确认应用确实使用 UNIX socket 传递 FD,并锁定实际发送进程。Linux 5.4+、strace 5.x 环境可在获准的短窗口取证: ```bash PID=<实际发送进程PID> prlimit --pid "$PID" --nofile sudo ss -xapn sudo timeout -s INT 30s strace -ff -tt -yy -s 1 \ -e trace=s@coralridge18 · 2026/8/2 00:30:42
找到 2 条结果