我不是內(nèi)向的人宫屠,我只是有點(diǎn)忙浪蹂。
2014年3月5日
最近幾周我一直在與一個(gè)古怪的 bug 斗智斗勇坤次。我有一個(gè)服務(wù)進(jìn)程缰猴,它發(fā)起一個(gè)長(zhǎng)連接到服務(wù)端疤剑,用來(lái)校驗(yàn)終端用戶隘膘,以及做一系列的 Streaming Operation 弯菊。
令人費(fèi)解的是,時(shí)不時(shí)的這個(gè)進(jìn)程就要泄露一個(gè) socket钦铁。這個(gè)現(xiàn)象發(fā)生的不能算太頻繁牛曹,但是也足夠頻繁到(造成麻煩)躏仇,不到一會(huì)兒,跑這個(gè)服務(wù)的機(jī)器就得資源耗盡糟描,因?yàn)樘幚聿粍?dòng)隊(duì)列請(qǐng)求而開(kāi)始假死船响。
這真是讓我抓狂啊工猜;我完全找不出問(wèn)題在哪兒,我把時(shí)間耗在這倆事兒上:在服務(wù)徹底傻逼之前去重啟它們史侣,以及凝望這段代碼惊橱。對(duì)税朴,在這兒家制,讓我給你演示一下…
秀逗麻袋正林。
這不是我的辦公室呀。我沒(méi)坐在我的椅子上颤殴,我的電腦也不見(jiàn)了卓囚,我他媽在哪呢?
這兒人不少诅病。特別吵哪亿。看上去莫非是正在開(kāi)個(gè)趴體啥的贤笆。
誒蝇棉,為什么我手是濕的?咦芥永,這是倒戏。一杯飲料夜矗;黑黑的還冒著泡,看起來(lái)像是可樂(lè)珊肃。對(duì)邑跪,它就是一杯可樂(lè)。飲料涼涼的,但是里面沒(méi)有冰塊兒。一小塊兒白色的餐巾紙已經(jīng)濕透了,它的邊緣在我手里捏的碎爛,我猜我一定已經(jīng)在這兒好一會(huì)兒了。
對(duì)茴肥,我想起來(lái)了础锐。這是丹邀請(qǐng)我來(lái)的那個(gè)辦公室趴體信姓。有人是要過(guò)40歲還是50歲來(lái)著。我不記得了。丹是個(gè)好同志,但是我們毫無(wú)相似之處趟薄,他話說(shuō)太多了羡铲。我猜這是因?yàn)樗霰kU(xiǎn)經(jīng)理的緣故吧。
哦,好吧倒槐,至少我沒(méi)被要求穿著西裝過(guò)來(lái)谎痢。我現(xiàn)在仍然試著避免穿的像那個(gè)電梯旁邊的傻逼一樣滨嘱。不過(guò)話說(shuō)回來(lái)吩翻,誰(shuí)會(huì)在一個(gè)辦公室趴體上(像我一樣)穿帽衫呢熊锭?
好吧锌妻,誰(shuí)在乎呢牍陌。他按了電梯,他可能要出去吧峡迷。哎喲,看那啄栓,兄弟——?jiǎng)e光顧著在 iPhone 上刷臉書了桂肌,否則你就要錯(cuò)過(guò)電梯啦。(指示)燈滅了挂捅,電梯在幾秒之內(nèi)就會(huì)到… 你竟然錯(cuò)過(guò)了斥季,哈哈,你個(gè)二貨,你…
我勒個(gè)去。
我勒個(gè)去灾梦。
他沒(méi)注意到若河。他錯(cuò)過(guò)了電梯辈赋。
我向你發(fā)誓那正是發(fā)生在我代碼里的事兒射亏,如果在等待 authentication tokens 時(shí)遠(yuǎn)端掛起了,我的應(yīng)用沒(méi)注意到炕桨,錯(cuò)誤便發(fā)生了立叛,導(dǎo)致 socket 泄露。
就是這樣贡茅。兩禮拜的痛苦啊秘蛇,解決方法就這么的降臨了,在一個(gè)滿是保險(xiǎn)推銷員的屋里顶考,在我端著一個(gè)跑了氣兒的可樂(lè)赁还,手里攥著碎爛的餐巾紙的時(shí)候。
我恐怕應(yīng)該直接閃人去試一下這個(gè)辦法靈不靈驹沿。但是我可不想這么混蛋… 我得找個(gè)不被人發(fā)現(xiàn)的開(kāi)溜辦法秽浇。我不能就這么等下去了。這已經(jīng)折磨我太久了甚负。
啊柬焕,狗日的,丹過(guò)來(lái)了梭域。他正笑著斑举,旁邊還有一個(gè)老頭。
唉病涨。我猜我走不了了富玷。他們確實(shí)是在和我說(shuō)話嗎?真難以置信既穆,我可不能閑聊啊赎懦,丹;你難道看不出來(lái)幻工?我像線程被掛起一樣滿腦子想著這個(gè)主意励两,我不能廢話,否則這么精妙且明顯的解決方法也許在我回到鍵盤上的時(shí)候就要丟啦囊颅。
噢当悔,這是你的CEO傅瞻。是。我也很高興見(jiàn)到你盲憎。擠個(gè)微笑嗅骄。小菊一拱小鞠一躬。點(diǎn)頭示意饼疙。我可千萬(wàn)別把那該死的電梯和 authentication tokens 給忘了溺森。是的,丹是個(gè)好同志窑眯。哦儿惫,他和你說(shuō)起我嗎?太好呀伸但。我肯定他沒(méi)告訴過(guò)你那個(gè)問(wèn)題肾请,就是你現(xiàn)在正攔著我要去解決的那個(gè)我他媽這么多天沒(méi)法睡覺(jué)就為了解決的該死的問(wèn)題。
好吧更胖,他們走了铛铁。我可能像往常一樣搞砸了,他們會(huì)認(rèn)為我瘋了却妨《穑或者,孤僻(不合群)彪标。我現(xiàn)在真不在乎倍权,因?yàn)槲医K于搞定這個(gè)傻逼 bug 啦。
就讓我在有個(gè)腦閃金光的二貨來(lái)浪費(fèi)我時(shí)間之前按下電梯按鈕吧捞烟。我可是不會(huì)錯(cuò)過(guò)的薄声。有個(gè) bug 等著我去 fix 呢(驕傲地說(shuō))。
你應(yīng)該在Twitter上Fo我一下题画,或者給我在Hacker News上丟個(gè)評(píng)論默辨。
原文:
http://blog.tabini.ca/i-am-not-an-introvert--i-am-just-busy-/ ,2014年3月6日 Hacker News 順位第一苍息。
譯者注:
- 「socket」如果翻譯為「套接字」會(huì)看著很蠢缩幸,就不翻了,反正都看得懂竞思;
- 「socket leak」對(duì)應(yīng)「handle leak」表谊,是Unix、Linux系統(tǒng)中獨(dú)有的盖喷,常見(jiàn)「CLOSE_WAIT」的情況爆办,耗盡所有的文件描述符 (file descriptor) ,然后報(bào)「Too many files」錯(cuò)誤传蹈;說(shuō)到 handle押逼,我也不愿意翻譯為「句柄」,真丑啊惦界。
- 「bug」不翻譯挑格,最早電子管里面趨光的蟲子,后來(lái)意指所有計(jì)算機(jī)領(lǐng)域里的錯(cuò)誤沾歪;
- 「Streaming Operation」里的 Streaming 有可能是流媒體傳輸漂彤,也有可能是其他的流式數(shù)據(jù)?
- 看原文灾搏,電梯口穿的像傻逼的哥們挫望,到底應(yīng)該是穿的西裝呢還是帽衫呢?@xubihang 同學(xué)給出了正確的解釋狂窑,作者說(shuō)的是自己穿著hoodie來(lái)party始終還是太奇怪了媳板;
- 「The light’s off, the car is going to arrive any second now…」有什么典故在里面,不懂泉哈;在@戲言 的提醒下蛉幸,我經(jīng)過(guò)與原作者 Marco Tabini 聯(lián)系,確認(rèn)了這句的「light」指的是電梯的指示燈丛晦,燈滅了表示電梯就要到了奕纫,而這兒的「car」就是指電梯;
- 「I’m hanging to this idea by a thread as it is.」烫沙,@戲言 同學(xué)給出了「我像線程被掛起一樣滿腦子想著這個(gè)主意」這個(gè)極為精妙且接程序員氣兒的翻譯匹层。
致謝:
幾位同學(xué)均對(duì)本文提出極好的修改建議。