现象
应用服务器的 error_log 看到大量的 upstream timed out,网站在访问时,时不时就出现整个页面卡住的现象。
根源
之前服务器放在美国,和美国本地的其他 Web 服务通讯延迟非常低,比如 api.github.com。而 V2EX 的用户个人主页中有 GitHub 和 Dribbble 集成功能。之前这里犯的低级错误就是没有把这两个请求进行异步处理。
服务器回到国内之后,延迟变大,于是所有和 Dribbble 及 GitHub 的通讯有一定概率堵住 Tornado instance,于是造成 upstream timed out。
其实这个问题之前在美国时也存在,只是因为网络延迟太低把问题給掩盖了。
解决
将这两个 API 请求放入 RQ 进行处理。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.