Skip to main content

双缓冲异步日志 — 不让磁盘 I/O 拖慢请求

·131 words·1 min· loading · loading · ·
GaleInk
Author
GaleInk
A Breezing Gale ~
Table of Contents
GaleWebServer 技术系列 - This article is part of a series.
Part : This Article

同步日志的瓶颈
#

(每次 fputs + fflush 阻塞等磁盘)

异步日志的设计
#

(业务线程只做 strdup + 入队、后台线程批量写盘)

环形队列的实现
#

m_queue_front / m_queue_rear 模运算、O(1) 入队出队)

strdup / free 为什么必须配对
#

(栈变量生命周期、free 时机——fputs 完后才释放)

队列满的策略
#

(静默丢弃 vs 阻塞等待、为什么选择丢弃)

同步 vs 异步,何时用哪个
#

(可靠性 vs 吞吐量的 tradeoff)

参考资料
#

GaleWebServer 技术系列 - This article is part of a series.
Part : This Article