我不是内向的人,我只是有点忙。
2014年3月5日
最近几周我一直在与一个古怪的 bug 斗智斗勇。我有一个服务进程,它发起一个长连接到服务端,用来校验终端用户,以及做一系列的 Streaming Operation 。
令人费解的是,时不时的这个进程就要泄露一个 socket。这个现象发生的不能算太频繁,但是也足够频繁到(造成麻烦),不到一会儿,跑这个服务的机器就得资源耗尽,因为处理不动队列请求而开始假死。
这真是让我抓狂啊;我完全找不出问题在哪儿,我把时间耗在这俩事儿上:在服务彻底傻逼之前去重启它们,以及凝望这段代码。对,在这儿,让我给你演示一下…
秀逗麻袋。
这不是我的办公室呀。我没坐在我的椅子上,我的电脑也不见了,我他妈在哪呢?
这儿人不少。特别吵。看上去莫非是正在开个趴体啥的。
诶,为什么我手是湿的?咦,这是。一杯饮料;黑黑的还冒着泡,看起来像是可乐。对,它就是一杯可乐。饮料凉凉的,但是里面没有冰块儿。一小块儿白色的餐巾纸已经湿透了,它的边缘在我手里捏的碎烂,我猜我一定已经在这儿好一会儿了。
对,我想起来了。这是丹邀请我来的那个办公室趴体。有人是要过40岁还是50岁来着。我不记得了。丹是个好同志,但是我们毫无相似之处,他话说太多了。我猜这是因为他做保险经理的缘故吧。
哦,好吧,至少我没被要求穿着西装过来。我现在仍然试着避免穿的像那个电梯旁边的傻逼一样。不过话说回来,谁会在一个办公室趴体上(像我一样)穿帽衫呢?
好吧,谁在乎呢。他按了电梯,他可能要出去吧。哎哟,看那,兄弟——别光顾着在 iPhone 上刷脸书了,否则你就要错过电梯啦。(指示)灯灭了,电梯在几秒之内就会到… 你竟然错过了,哈哈,你个二货,你…
我勒个去。
我勒个去。
他没注意到。他错过了电梯。
我向你发誓那正是发生在我代码里的事儿,如果在等待 authentication tokens 时远端挂起了,我的应用没注意到,错误便发生了,导致 socket 泄露。
就是这样。两礼拜的痛苦啊,解决方法就这么的降临了,在一个满是保险推销员的屋里,在我端着一个跑了气儿的可乐,手里攥着碎烂的餐巾纸的时候。
我恐怕应该直接闪人去试一下这个办法灵不灵。但是我可不想这么混蛋… 我得找个不被人发现的开溜办法。我不能就这么等下去了。这已经折磨我太久了。
啊,狗日的,丹过来了。他正笑着,旁边还有一个老头。
唉。我猜我走不了了。他们确实是在和我说话吗?真难以置信,我可不能闲聊啊,丹;你难道看不出来?我像线程被挂起一样满脑子想着这个主意,我不能废话,否则这么精妙且明显的解决方法也许在我回到键盘上的时候就要丢啦。
噢,这是你的CEO。是。我也很高兴见到你。挤个微笑。小菊一拱小鞠一躬。点头示意。我可千万别把那该死的电梯和 authentication tokens 给忘了。是的,丹是个好同志。哦,他和你说起我吗?太好呀。我肯定他没告诉过你那个问题,就是你现在正拦着我要去解决的那个我他妈这么多天没法睡觉就为了解决的该死的问题。
好吧,他们走了。我可能像往常一样搞砸了,他们会认为我疯了。或者,孤僻(不合群)。我现在真不在乎,因为我终于搞定这个傻逼 bug 啦。
就让我在有个脑闪金光的二货来浪费我时间之前按下电梯按钮吧。我可是不会错过的。有个 bug 等着我去 fix 呢(骄傲地说)。
你应该在Twitter上Fo我一下,或者给我在Hacker News上丢个评论。
原文:
http://blog.tabini.ca/i-am-not-an-introvert--i-am-just-busy-/ ,2014年3月6日 Hacker News 顺位第一。
译者注:
- 「socket」如果翻译为「套接字」会看着很蠢,就不翻了,反正都看得懂;
- 「socket leak」对应「handle leak」,是Unix、Linux系统中独有的,常见「CLOSE_WAIT」的情况,耗尽所有的文件描述符 (file descriptor) ,然后报「Too many files」错误;说到 handle,我也不愿意翻译为「句柄」,真丑啊。
- 「bug」不翻译,最早电子管里面趋光的虫子,后来意指所有计算机领域里的错误;
- 「Streaming Operation」里的 Streaming 有可能是流媒体传输,也有可能是其他的流式数据?
- 看原文,电梯口穿的像傻逼的哥们,到底应该是穿的西装呢还是帽衫呢?@xubihang 同学给出了正确的解释,作者说的是自己穿着hoodie来party始终还是太奇怪了;
- 「The light’s off, the car is going to arrive any second now…」有什么典故在里面,不懂;在@戲言 的提醒下,我经过与原作者 Marco Tabini 联系,确认了这句的「light」指的是电梯的指示灯,灯灭了表示电梯就要到了,而这儿的「car」就是指电梯;
- 「I’m hanging to this idea by a thread as it is.」,@戲言 同学给出了「我像线程被挂起一样满脑子想着这个主意」这个极为精妙且接程序员气儿的翻译。
致谢:
几位同学均对本文提出极好的修改建议。
网友评论