断点下载不只是加个 Range:HTTP 字节范围、校验器与文件拼接

HTTP 断点下载的数据分片

大文件下载到 90% 时网络中断,最浪费的做法是从头再来。HTTP 字节范围请求允许客户端只取缺失部分,但可靠的断点下载绝不是把新响应直接追加到旧文件:服务器可能忽略范围,资源也可能已经更新。只有同时验证状态码、范围边界和资源版本,拼接后的文件才可信。

Read More

日志轮转不只是改名:读懂 logrotate、inode 与文件重开

Linux 日志轮转与文件重开

线上日志持续增长时,直接删除大文件未必能释放磁盘,简单改名也未必能让进程写入新文件。原因在于 Linux 进程持有的是指向文件对象的描述符,而不是一条会自动跟随变化的路径。把 logrotate 配置写对,关键不是记住几个参数,而是明确谁负责切换文件、进程何时重开描述符,以及怎样证明空间真的被回收。

Read More

epoll 为什么会漏事件:LT、ET、非阻塞与读空循环

epoll 事件循环与非阻塞 I/O

服务从“每连接一个线程”改成 epoll 后,压测时却偶尔有连接停住,重启才恢复。问题通常不在 epoll_wait() 本身,而在程序混淆了“已经有数据”和“内核通知数据变化”这两件事。理解 LT、ET 的通知语义,并把 Socket、读取循环和业务状态机配套设计,才能避免看似随机的漏事件。

Read More