程序员的必修课:为什么Hacker News昨晚一夜宕机

开发 项目管理
昨天Hacker News宕机了一晚上。问题不是由于我们新上的服务器。事实上,其中的原因愚蠢的让人不好意思说。

[[65188]] 

这是Hacker News官方网站上的一篇声明,解释为什么Hacker News昨晚上宕机一夜。

昨天Hacker News宕机了一晚上。问题不是由于我们新上的服务器。事实上,其中的原因愚蠢的让人不好意思说。

有一个评论贴,一个新用户想在里面发表回复,但发布出去的内容没有成为目标评论的子评论,反而成为与它平级的评论。我回复了一个评论来解释 Hacker News是如何工作的。但我觉得该帮这个人修复一下,在他的回复上做个小手术。不幸的是,我用错了评论的ID,使评论的树结构里出现了一个循环;我使一条评论成为了它自己的下级评论。这样一来,任何一个人试图浏览这个帖子时,服务器都会生成一个无限长的长页面。因为这个评论所属的文章正处在首页,所以这个动作被大量的执行。

不知什么原因,我在修改这个评论后并没有去查看这个评论是否留在了它正确的位置。一定是有什么事情让我分心了。所以我没有发现任何异常,直到不久之后服务器看起来开始有些喘。

我截取了服务器日志看发生了什么,里面的信息看起来是Hacker News缺少足够的内存,在频繁的回收内存。不管是不是这个原因,或出现了其它事故,这种问题一般是通过重启服务器都能解决。于是我这样做了。因为当天我开发了一些代码,所以当我重启服务器时,上面运行的是新版程序。

重启了服务后,问题依旧存在。我怀疑是我那天写的程序里有什么问题,我尝试将版本恢复到上一版,然后重启服务。但问题依旧存在。我们又试着把这以前老服务器上的程序拿过来换上,也不好用。我们认识到程序应该是没问题的,我们认为问题应该出在了这个新服务器上。于是我们试图切换到老的服务器上。我不知道我的同事Nick是否成功的切换,因为中途我放弃了,睡觉去了。

当我今早醒来,监控显示Hacker News仍然在新服务器上跑。出问题的那条评论仍在那,但那篇文章已经被新上来的文章顶出首页。所以整体上Hacker News并没有宕机,但迹象仍显示什么地方出了问题。例如,/threads?id=pg 无法访问,因为我使这个帖子里出现了死循环。

终于,数据显示,问题似乎跟某个特定的ID相关。当我到服务器上查看这条数据时,终于意识到了一定是我做错了事。

于是我又给那个回复动了一次手术,这次很小心,一切又恢复正常了。

我感到很抱歉。

英文原文:Why HN was down

译文链接:http://www.aqee.net/hacker-news-was-down-all-last-night/

责任编辑:林师授 来源: 外刊IT评论
相关推荐

2009-09-29 10:35:42

Linux系统系统提速Linux

2010-11-25 10:55:34

2014-02-17 09:22:37

2022-03-11 10:53:32

UML建模语言

2015-07-29 10:25:05

数据开发产品必修课

2009-02-10 15:08:41

2016-01-26 17:47:58

SaaSSaaS平台SaaS服务

2018-04-28 10:05:17

2012-01-06 14:10:42

数据质量管理大数据数据管理

2023-09-27 22:18:41

2020-01-13 16:26:57

AI人工智能机器

2022-08-15 15:03:57

数字化转型数字技术中小企业

2020-07-13 14:59:59

程序员技能开发者

2020-10-23 10:02:40

GRASPRDD模式

2010-11-09 09:51:52

汇编语言

2014-06-23 15:37:50

2023-09-12 11:28:10

2018-08-24 09:02:26

2020-11-06 15:30:23

分库分表Sharding-JD数据库

2013-07-16 10:08:51

MIT编程语言
点赞
收藏

51CTO技术栈公众号