emu in blogjava

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            171 隨筆 :: 103 文章 :: 1052 評(píng)論 :: 2 Trackbacks

          項(xiàng)目的PV長(zhǎng)期徘徊在每天1億多個(gè)PV,雖然同時(shí)在線數(shù)一直在沖新高,PV始終沖不上去。doudou用其它方式做PV統(tǒng)計(jì)也證實(shí)了emu的方式是存在問(wèn)題的,但是到底是什么問(wèn)題呢?我們來(lái)看一下發(fā)起PV統(tǒng)計(jì)的代碼是怎么寫(xiě)的:

          new ?Image().src = " 統(tǒng)計(jì)PV的CGI " ;

          就一行代碼,還能有錯(cuò)嗎?能有什么錯(cuò)呢?難道請(qǐng)求的結(jié)果被IE給cache了?反復(fù)檢查了http header,嘗試了加隨機(jī)數(shù)來(lái)禁止cache,都沒(méi)有用

          用sniffer反復(fù)試驗(yàn)后證實(shí),上面的方式確實(shí)有的時(shí)候發(fā)不出去http請(qǐng)求。再看了一眼代碼:

          new ?Image().src = " 統(tǒng)計(jì)PV的CGI " ;

          突然靈光一現(xiàn),找到原因了!

          如果在創(chuàng)建Image對(duì)象的時(shí)候,瀏覽器的不忙,垃圾回收器正好被喚醒來(lái)收垃圾了,GC會(huì)發(fā)現(xiàn)這個(gè)Image根本就沒(méi)有句柄來(lái)引用,屬于可以回收的垃圾,因此會(huì)在請(qǐng)求發(fā)起之前就把這個(gè)對(duì)象給回收掉了。本來(lái)創(chuàng)建這個(gè)對(duì)象的時(shí)候刻意不保存引用句柄來(lái)方便GC回收它,可是沒(méi)想到GC有可能回收的這么快,那就保存一個(gè)句柄吧:

          var ?tmpImage? = ? new ?Image();
          tmpImage.src
          = " 統(tǒng)計(jì)PV的CGI " ;

          修改發(fā)布之后,一天內(nèi)PV劇增了8000萬(wàn)。

          有的時(shí)候我們也用Image對(duì)象來(lái)做其它功能的,比如跨域發(fā)送http請(qǐng)求,比如測(cè)試網(wǎng)速等等,都需要小心這個(gè)問(wèn)題。

          posted on 2006-06-28 10:51 emu 閱讀(3045) 評(píng)論(9)  編輯  收藏

          評(píng)論

          # re: fix一個(gè)bug,一天增加近億個(gè)PageView 2006-06-28 14:43 江南白衣
          這么開(kāi)心的事情,是不是見(jiàn)者有份,回復(fù)的都管一頓飯啊.  回復(fù)  更多評(píng)論
            

          # re: fix一個(gè)bug,一天增加近億個(gè)PageView 2006-06-28 17:17 原創(chuàng)專欄 開(kāi)源學(xué)習(xí)
          不知道能不能蹭來(lái)飯,但頂是頂了。  回復(fù)  更多評(píng)論
            

          # re: fix一個(gè)bug,一天增加近億個(gè)PageView 2006-06-28 22:07 emu
          呵呵要是回復(fù)都管一頓,emu的積分排行恐怕很快就可以超過(guò)白衣了。不過(guò)要是白衣大哥真的賞臉,多管幾頓又有何妨?  回復(fù)  更多評(píng)論
            

          # re: fix一個(gè)bug,一天增加近億個(gè)PageView 2006-06-30 20:10 google
          最后得出結(jié)論:這里確實(shí)值得經(jīng)常來(lái)!  回復(fù)  更多評(píng)論
            

          # re: fix一個(gè)bug,一天增加近億個(gè)PageView 2006-07-07 14:00 eamoi_nologin
          從上面的留言看,好像是真的有管飯。
          趕緊回復(fù)一下。emu,記得噢。  回復(fù)  更多評(píng)論
            

          # re: fix一個(gè)bug,一天增加近億個(gè)PageView 2006-09-30 10:11 陳朋奕..
          果然是技術(shù)達(dá)人……
          PV多了8000萬(wàn),你們老板會(huì)管一頓飯吧,到時(shí)叫上我咯  回復(fù)  更多評(píng)論
            

          # re: fix一個(gè)bug,一天增加近億個(gè)PageView 2006-11-01 16:03 XS
          還好我向來(lái)不直接 new Image().src ,習(xí)慣先定義obj,再obj.src  回復(fù)  更多評(píng)論
            

          # re: fix一個(gè)bug,一天增加近億個(gè)PageView 2009-05-15 16:39 魔獸世界私服
          細(xì)心的高手,學(xué)心了....  回復(fù)  更多評(píng)論
            

          # re: fix一個(gè)bug,一天增加近億個(gè)PageView 2009-05-15 16:41 藏獒
          你是高級(jí)工程師啊,NB...  回復(fù)  更多評(píng)論
            


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 达日县| 湖南省| 革吉县| 舞钢市| 德清县| 濉溪县| 珲春市| 綦江县| 同德县| 沁水县| 梁平县| 洪江市| 织金县| 文山县| 石阡县| 会东县| 家居| 溧水县| 三明市| 河北省| 陵水| 金堂县| 乐平市| 偏关县| 荃湾区| 汶上县| 成安县| 开远市| 太和县| 本溪市| 云安县| 绍兴县| 冷水江市| 大兴区| 绥宁县| 萨迦县| 准格尔旗| 荃湾区| 东辽县| 兰州市| 柯坪县|