- 2024 年 6 月 30 日的记录,探讨四行代码的问题。之前此代码一直困扰着作者,检查后发现 TCP 服务比 TLS 服务耗时更多,尽管 TLS 在 TCP 上运行且生成的数据包是 TCP 的六倍。
- 比较了 gopher 和 gemini 的 CPU、requests 等数据,通过分析 TCP 和 TLS 接口代码寻找原因。
- 发现 TCP 实现中的一段代码
while self.\_\_socket.sendqueue and ios.\_\_socket.sendqueue > 0 do... end
不在 TLS 实现中,去除该代码后测试,结果 gopher 的 CPU 时间大幅减少,问题得到解决。 - 解释了
sendqueue
字段及相关代码的作用和可能导致的问题,以及“write”事件代码的流程。 - 提到该问题仅存在于本地(或 Unix)域套接字,对于 IP 套接字是错误的做法,找到根本原因并不容易,但修复很简单。
- 最后介绍了关于此条目的讨论链接,包括 Lobsters、Hacker News 和 ZeroBytes 等。还提到了网站链接的格式及颜色 shading 的实验用途。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。