由 HTTP Header 引起的请求超时问题排查

在实际业务中遇到了一个很奇怪的问题,服务 A 通过 HTTP 请求访问 Go 语言的服务 B,少部分请求会超时。进一步分析发现,如果一个请求超时,其重试也一定会超时,说明针对特定请求内容,超时是必然发生的问题。通过检查服务 B 的处理日志发现,对于超时的请求,其业务逻辑处理的耗时正常。

一开始通过排除法来分析,逐步替换怀疑有问题的模块,结果并没有定位到问题。后来通过抓包,分析正常包与超时包的区别,合理猜测有问题的部分并进行验证,最终定位到原来是 Expect: 100-continue 这个请求 HTTP header 导致了这里的超时。整个排查和修复过程,踩了不少坑,记录下来可以给大家参考。

WireShark 抓包 HTTP expect: 100-continue 的包

阅读全文

离婚法律指南:离婚流程要多久?

当婚姻走到了尽头:必读的离婚法律指南 中已经对离婚所涉及的一些法律事项进行了一个总的说明,不过在实际和当事人交流中,发现很多人对离婚要经历多久没有一个认识,本篇文章就展开聊聊。

在中国,离婚的途径有两种,一是协议离婚,二是诉讼离婚。在协议离婚中,夫妻双方需要一起到民政局提交离婚申请,受理后等待离婚 30 天冷静期,然后再一起去民政局办理领取离婚证手续,这个过程最快也要 31 天。如果夫妻双方对财产分割或者子女抚养问题有争议,那么可能需要更长的时间来协商和解决。

如果夫妻双方无法达成协议,那么就需要通过诉讼离婚。诉讼离婚的过程通常会更长,因为它涉及到法院的审理和判决。一般来说,诉讼离婚需要几个月甚至一年以上的时间。在这个过程中,夫妻双方需要提交各种证据,参加庭审,等待法院的判决,后面会聊聊每个环节一般会要多久。

阅读全文

解密 ChatGPT 数据泄露:Redis Bug 的深度分析

2023.03.20 号,OpenAI 的 ChatGPT 服务曾经中断了一段时间,随后 OpenAI 发了一篇公告 March 20 ChatGPT outage: Here’s what happened 把这里的来龙去脉讲了一下。OpenAI 在公告里说明了本次故障的影响范围、补救策略、部分技术细节以及改进措施,还是很值得学习的。

本次事故处理的具体时间节点在 ChatGPT Web Interface Incident 也有公开,如下图:

ChatGPT 故障整体修复时间节点

这个故障是由 Redis 的 Python 客户端 Bug 引发的,在 Github 上有关于这个 bug 的讨论。这个 bug 的修复过程并不顺利,有不少讨论和修复尝试,比如 Issue 2624PR 2641Issue 2665PR 2695。看过这些后,似乎还是不能理解这里的修复,只好深入读读代码,看看这里的 bug 原因以及修复过程到底是怎么回事,顺便整理成这篇文章。

阅读全文