一,自選股分析 二,NBA比賽分析 三,播客分析 四,開心網(wǎng)分析 -----------------------------------------------------------------------------------------
下面的圖片都是在教育網(wǎng)訪問的情況,我故意放大了某些缺陷,這樣可以很好的模擬沒有部署服務的地區(qū)對用戶體驗的影響。我只能針對我熟悉和了解的項目進行分析,另外還有我們經(jīng)常訪問的網(wǎng)站也會被拿來做素材分析。我們老大也說問題暴露出來,能推動解決的話也很好,大家別拍我。
一,自選股分析
某天我終于在教育網(wǎng)部署了一臺行情服務,興致沖沖的回家一試,貌似沒啥變化,該慢還慢。打開頁面過程持續(xù)了幾十秒,然后終于露出了行情,我再電擊每個組合的時候就出現(xiàn)了上面的一幕??戳讼耭irebug,最慢資源排名前三依次為:高效計數(shù)服務,secure-cn統(tǒng)計服務,動態(tài)池服務。
高效計數(shù)服務是早期我參與的項目,那時候資源有限,全部部署在了網(wǎng)通。 secure-cn統(tǒng)計服務: 這個服務不慢是不正常的,到處都嵌,還不能不嵌。 動態(tài)池數(shù)據(jù)庫很牛,但在偏遠地區(qū)也鞭長莫及。這個缺點比較典型: 一,沒有在教育網(wǎng)部署。 二,沒有保持長連接。 三,沒有使用cahce 四,沒有使用壓縮 五,長達2.46K的http 請求header,捎帶大量cookie,見下面。
解決方法:我分析了下,下面這個數(shù)據(jù)變化很慢的,主要放一些市盈率和用戶股票列表。市盈率可以通過去年的每股收益來計算,以年計,可以變通一下。用戶股票列表我也好幾個月沒更新了,大家并不是總更新。所以這部分數(shù)據(jù)是可以被設(shè)置一個很長的cache的,如果用戶更新了股票列表,我們也只需要在maxage版本號上加1就ok了。另外,用戶點了一個組合,接看來也都要看幾個別的組合,沒有維持長連接顯然不合理的。在沒有部點的idc,壓縮就能明顯的提升響應速度,這里就沒考慮。那個cookie太長點了吧,真的用的了那么長嗎。
http://vip.stock.finance.sina.com.cn/portfolio/stock.php?rn=1228707043897&pid=1245111&type=complete ---------------------------------------------------------------------------------------- GET /portfolio/stock.php?rn=1228707043897&pid=1245111&type=complete HTTP/1.1 Host: vip.stock.finance.sina.com.cn User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-cn,zh;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Cookie: CurrentBar=attend; CurrentTab=state; CombinationSelected=154148; CommisionCookie=0; StampCookie=0; FeeCookie=0; BX=7t1oh653u6qvb&b=3&s=4k; SINA_NEWS_CUSTOMIZE_city=%u5317%u4EAC; userId=C7DHwoAi-ryCr69CGgyc3czekbyphdy5hcxQNhFcN6zCNe; FINA_VISITED_S=sh601988|-y?L,sh580989|W*JTP1,sh601988|-y?L,sh601988|-y?L,sh580989|W*JTP1,sh601988|-y?L,sh601988|-y?L,sh601988|-y?L,sh580989|W*JTP1; Iask2_visitID=10.217.21.44.177601199668733612; UNIPROCT=342-0-0:2; hold_sinabar_name=iyangjian2005997; UNIPROPATH=2:iyangjian2005997:0::1:|*|202.112.174.100.97191204115419966|pid:342-0-0-0-0|classad.sr/|st:25.906|et:1204118703312||hp:unkown|lb:1|*|; SINAPUID=10.217.21.64.250871201592749264; vjuids=-5600fbe60.117402dbc5e.0.42a2debdf9f46; VISITED_FANCHAN_SINA_ZHANGYQ=SINA_BEIJING; S_WC_USRTOK=SFyLe9; stat=0806201608589720436533; MY_STOCK_LIST_2=sh600602; visited_futures=SI%7CCL%7CGC%7CCAD%7CTRB%7Cau0812%7CCC%7CPBD%7CCF907%7CNID; SINA_FINANCE=iyangjian2005997%3A1181509184%3A2; visited_funds=000011%7Csh000011%7C159902%7C160314%7C377016%7C270005%7C202009; SINA_FINANCE_SELECT_TYPE=stock; vjuid=-12b4fad5c.1174d78e8a5.0.6099c257a27eb; vjlast=1199616063; vjlast=1199616063,1228706963,10; sina_sort_default=117; SHOW_TIP_BOX=1; FINA_V_S_2=sz000609,sz000723,sh000001,sz002242,sz002274,sz000049,sz002272,sh600432,sh601186,sh601390,sh600036,sz000625; hk_visited_stocks=HSI%7C04338%7CHSCEI%7CHSCCI; visited_cfunds=050007%7Csz161010; __utma=269849203.390390911.1226996335.1226996335.1226996335.1; __utmz=269849203.1226996335.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); SINAGLOBAL=202.112.174.100.224381203683121713; Apache=202.112.174.100.771641228691763829; SessionID=e9bc0f217040ae10439d85f422f3187a; SINA_PORTFOLIO=sz000514%2Csh600729%2Csh600438%2Csh600528%2Csh600678%2Csh600877%2Csh600039%2Csh601005%2Csh600875%2Csz001696%2Csz000628%2Csh600116 Cache-Control: max-age=0
HTTP/1.x 200 OK Date: Mon, 08 Dec 2008 03:32:52 GMT Server: Apache Cache-Control: no-cache Expires: Mon, 08 Dec 2008 03:34:52 GMT Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=GBK ----------------------------------------------------------------------------------------
如果不是這幾個資源的引用,這個頁面的速度將非??臁?br> 這里引用了某些未在教育網(wǎng)部署的服務,導致半天出不了數(shù)據(jù)。
由于引入了mark.sina.com.cn的數(shù)據(jù)導致整個頁面卡在那里。引用別人數(shù)據(jù)的時候你了解過他們是怎么分布自己服務的嗎?可能稍有不慎拖垮整個頁面。
二,NBA比賽分析
這里的js真的有必要每次都發(fā)起請求嗎?連續(xù)請求3同域個資源,為什么不維持下長連接?
這些圖片的304響應為什么都在秒級以上?
三,播客分析
這些圖片和視頻由于解析錯誤,教育網(wǎng)用戶被解析到廣州服務器組,導致不可訪問。
四,開心網(wǎng)分析
打開開心網(wǎng),看到最多的就是人物圖片,我就僅僅針對圖片進行下分析:
1,瀏覽一個新人的頁面,大概要下載30~40張小圖片。使用單一的pic.kaixin001.com域名,不能提高并發(fā),可以考慮多域名取模。 2,圖片請求帶了cookie,上行帶寬浪費點無所謂,但是會影響響應速度和用戶體驗。 3, /logo/10/51/50_105146_1.jpg ,他們設(shè)置了一個比較大的maxage,通過改名來實現(xiàn)更新大可不必,我用我的方法更好。 4,每次點刷新頁面,都會重新加載很多圖片,雖然很多是304,我覺得絕大部分就不應該發(fā)這個請求。 5,他用的是ChinaCache的CDN,Server: nginx,我不知道ChinaCache對這個server修改到什么程度。統(tǒng)計發(fā)現(xiàn)這個人物小圖片大都在2k左右。很多才1k多。沒有必要把他們當作圖片處理。盡量不產(chǎn)生磁盤i/o,包括fstat這樣的系統(tǒng)調(diào)用,甚至sendfile這樣的zero copy系統(tǒng)調(diào)用,我覺得都浪費. 同時還要保證圖片更新立刻被感應到。
其他方面還有很多可以改進的,想讓他們的頁面響應速度上一個等級,節(jié)約更多帶寬和服務器資源并非難事。
|