多实例环境下Serilog步骤2、3日志丢失问题排查求助
日志丢失排查请求
运行环境与业务流程
运行环境为多实例架构,核心处理流程如下:
- 读取含15000条记录的文件,将每条记录附带条目ID插入queue-A;
- 实例从queue-A获取条目,在数据库创建对应记录,无论操作成功或失败均需记录日志,完成后将条目ID插入queue-B;
- 实例从queue-B获取条目,为数据库中对应记录创建property-X,无论操作成功或失败均需记录日志,完成后将属性ID插入queue-C;
- 实例从queue-C获取条目,为数据库中对应记录创建property-Y,无论操作成功或失败均需记录日志。
注:上述流程为顺序执行。
异常现象
在Datadog中发现步骤2和步骤3存在部分条目日志丢失:这些条目既无成功日志也无失败日志,但数据库中已创建对应记录/属性,仅日志缺失。
已排除的可能原因
- 多实例导致Serilog写入异常:已配置Serilog参数
<add key="serilog:write-to:RollingFile.shared" value="true"/>,不同实例可正常写入同一日志文件,排除该可能; - 日志行数/文件达到限制:使用Serilog Async,默认缓冲区大小为10000条,满时不阻塞,每次日志量约3000-14000条,未达上限,排除该可能;
- CPU占用过高无法处理日志:CPU占用约20%,资源充足,排除该可能;
- Datadog遗漏日志文件:日志文件命名格式为
File-Data-sequentialNumber,文件编号连续,排除该可能。
进一步观察到的规律
- 生产环境:12000条条目中,有60条在步骤2丢失日志,60条在步骤3丢失日志;
- NFT环境:步骤2和步骤3均有约1/4的记录丢失日志,呈现稳定规律——每处理4条丢失1条或每处理3条丢失1条。
恳请协助排查日志丢失的根本原因。
内容的提问来源于stack exchange,提问作者paddywide
相关产品推荐
相关产品推荐

