宅米網(wǎng)性能優(yōu)化實(shí)踐(內(nèi)附小強(qiáng)點(diǎn)評(píng))-創(chuàng)新互聯(lián)

背景介紹

柳林網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,柳林網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為柳林近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的柳林做網(wǎng)站的公司定做!

宅米是一家專注校園電子商務(wù)的互聯(lián)網(wǎng)企業(yè),目前主營(yíng)校園超市O2O。公司成立于2014年11月,僅僅一年多的時(shí)間,公司即經(jīng)過(guò)4輪融資,覆蓋近200座城市,1000多所大中專院校,10000多棟宿舍樓,日均訂單20萬(wàn),峰值訂單50萬(wàn)。

初識(shí)架構(gòu)


宅米網(wǎng)性能優(yōu)化實(shí)踐(內(nèi)附小強(qiáng)點(diǎn)評(píng))

這樣的系統(tǒng)能不能應(yīng)對(duì)今后快速的業(yè)務(wù)發(fā)展?性能問(wèn)題會(huì)不會(huì)成為持續(xù)增長(zhǎng)的交易量的瓶頸?系統(tǒng)能不能撐得住訪問(wèn)高峰期的大規(guī)模并發(fā)訪問(wèn)? 性能優(yōu)化成為這個(gè)時(shí)候最重要的工作,于是安排專門(mén)的工程師進(jìn)行性能測(cè)試和性能優(yōu)化,從架構(gòu)、代碼、數(shù)據(jù)庫(kù)、運(yùn)維各個(gè)層面梳理系統(tǒng)狀況,發(fā)現(xiàn)系統(tǒng)瓶頸,進(jìn)行針對(duì)性優(yōu)化。

小強(qiáng)點(diǎn)評(píng):這種架構(gòu)是初識(shí)架構(gòu),一般系統(tǒng)都是在這個(gè)架構(gòu)上進(jìn)行逐步演化的,掌握基本的架構(gòu)知識(shí)對(duì)于測(cè)試工程師來(lái)說(shuō)十分重要。

性能測(cè)試


校園零食購(gòu)物的特點(diǎn)是在晚上10點(diǎn)左右進(jìn)入高峰,在此前后一小時(shí)的交易量大概占整天交易量的一半,也就是說(shuō),如果要設(shè)計(jì)一個(gè)日訂單100萬(wàn)的系統(tǒng),其實(shí)要承受的交易壓力是每小時(shí)50萬(wàn)單。

當(dāng)初按照二八法則推算峰值每秒單量為556筆,以此為基準(zhǔn)根據(jù)Nginx日志分析后端接口調(diào)用頻率,推算出接口調(diào)用比率前20的請(qǐng)求,以此構(gòu)造測(cè)試場(chǎng)景。

在執(zhí)行性能測(cè)試時(shí),我們使用Jmeter作為性能測(cè)試工具,利用了云服務(wù)提供的系統(tǒng)資源監(jiān)控作為基礎(chǔ)。

小強(qiáng)點(diǎn)評(píng):很多人一直糾結(jié)并發(fā)數(shù)怎么去算,其實(shí)算法非常多,在小強(qiáng)性能測(cè)試培訓(xùn)班中就講了大概4種算法,個(gè)人覺(jué)得根本不存在準(zhǔn)確不準(zhǔn)確的問(wèn)題,關(guān)鍵是在你的應(yīng)用場(chǎng)景,這世上哪里有絕對(duì)的準(zhǔn)確?


架構(gòu)優(yōu)化


宅米網(wǎng)性能優(yōu)化實(shí)踐(內(nèi)附小強(qiáng)點(diǎn)評(píng))

性能測(cè)試結(jié)果并不樂(lè)觀,雖然系統(tǒng)此前使用了分布式緩存對(duì)熱點(diǎn)數(shù)據(jù)進(jìn)行緩存,但是比較隨意,哪些數(shù)據(jù)需要緩存,失效策略如何設(shè)置都沒(méi)有認(rèn)真分析和設(shè)計(jì)。性能測(cè)試后決定規(guī)范緩存使用,盡可能將各種頻繁讀取的數(shù)據(jù)全部緩存起來(lái),并將Redis服務(wù)器做集群和主從復(fù)制部署。

小強(qiáng)點(diǎn)評(píng):緩存帶來(lái)的效果是明顯的,一般對(duì)于大量數(shù)據(jù)的查詢我們都要首先考慮緩存方面的優(yōu)化。當(dāng)然,這里說(shuō)的是后端緩存,對(duì)于前端的緩存也需要考慮。

此外還使用第三方CDN服務(wù)進(jìn)行靜態(tài)文件訪問(wèn)加速,產(chǎn)品圖片、JavaScript文件、CSS文件等都通過(guò)CDN加速,同時(shí)通過(guò)Nginx反向代理服務(wù)器提供靜態(tài)文件的前端緩存。

小強(qiáng)點(diǎn)評(píng):這些都是偏向于前端性能優(yōu)化方面的問(wèn)題了,感興趣的可以看我的前端性能測(cè)試視頻。

性能測(cè)試發(fā)現(xiàn),系統(tǒng)主要瓶頸點(diǎn)在數(shù)據(jù)庫(kù)上,雖然使用Redis將熱點(diǎn)數(shù)據(jù)緩存起來(lái),但是數(shù)據(jù)庫(kù)依然在并發(fā)量達(dá)到一定程度后表現(xiàn)出系統(tǒng)過(guò)載的情況。于是對(duì)數(shù)據(jù)庫(kù)進(jìn)行主從分離。

sql語(yǔ)句優(yōu)化


性能測(cè)試過(guò)程中發(fā)現(xiàn),由于此前主要精力都在關(guān)注如何快速實(shí)現(xiàn)業(yè)務(wù),大量數(shù)據(jù)庫(kù)查詢語(yǔ)句寫(xiě)得比較隨意,索引設(shè)計(jì)非常不合理。 結(jié)合性能測(cè)試中Mysql數(shù)據(jù)庫(kù)slow.log分析,定位慢查詢SQL追加index,然后利用解釋執(zhí)行計(jì)劃explain優(yōu)化SQL

小強(qiáng)點(diǎn)評(píng):任何系統(tǒng)在sql語(yǔ)句方面多多少少肯定會(huì)有問(wèn)題,一般我們的方法就是慢查詢監(jiān)控>top N語(yǔ)句分析>優(yōu)化改進(jìn)。思路基本都是這樣,具體的做法各不相同,靈活應(yīng)對(duì)。

數(shù)據(jù)庫(kù)連接池優(yōu)化


在做性能測(cè)試的時(shí)候發(fā)現(xiàn)在某些情況下有較為嚴(yán)重的性能問(wèn)題。在高并發(fā)情況下,長(zhǎng)時(shí)間施加壓力,應(yīng)用程序出現(xiàn)不能訪問(wèn)的狀況。

上網(wǎng)查找資料,發(fā)現(xiàn)很多人也遇到了C3P0的”APPARENT DEADLOCK”問(wèn)題。

將C3P0切換成國(guó)產(chǎn)數(shù)據(jù)庫(kù)連接池Druid之后,狀況明顯好轉(zhuǎn),類似問(wèn)題再未出現(xiàn)過(guò)。

小強(qiáng)點(diǎn)評(píng):C3P0確實(shí)有一些小bug。后來(lái)我們也用了阿里開(kāi)源的Druid目前來(lái)看還是不錯(cuò)的哦,可以嘗試一下。

H5響應(yīng)壓縮優(yōu)化


開(kāi)啟Nginx gzip壓縮 , 降低App響應(yīng)數(shù)據(jù)包大小,提高響應(yīng)性能

小強(qiáng)點(diǎn)評(píng):前端的性能優(yōu)化,不論是app、h6還是web都是一樣的,我們很多童鞋學(xué)的太死板,沒(méi)有做到一通百通。


訂單數(shù)據(jù)冷熱分離


隨著業(yè)務(wù)的持續(xù)發(fā)展,訂單表的數(shù)據(jù)會(huì)越來(lái)越多。按我們現(xiàn)在日訂單量20萬(wàn)單預(yù)估,月訂單量則為600萬(wàn)單,年訂單量則達(dá)到7200萬(wàn)單,而且日訂單量還在不斷的增加,用不了多久,數(shù)據(jù)量就會(huì)超過(guò)MySQL的極限。 一開(kāi)始我們考慮使用分布式數(shù)據(jù)庫(kù)的方案,對(duì)訂單表進(jìn)行水平切分,使用訂單號(hào)進(jìn)行hash,將訂單數(shù)據(jù)切分到多張表上。 進(jìn)一步分析后發(fā)現(xiàn),訂單數(shù)據(jù)具有明顯的冷熱不均的特點(diǎn),即剛剛創(chuàng)建的訂單是熱數(shù)據(jù),不同應(yīng)用以各種方式訪問(wèn)修改這些訂單。經(jīng)過(guò)一段時(shí)間以后,特別是訂單完成后,訂單訪問(wèn)頻率急劇降低,而且只有訂單查詢這一種操作。于是我們考慮采取冷熱數(shù)據(jù)分離的策略,以控制熱庫(kù)中數(shù)據(jù)總量,保障訂單表數(shù)據(jù)量始終維持在一個(gè)可以接受的范圍內(nèi),進(jìn)而提供穩(wěn)定的數(shù)據(jù)訪問(wèn)性能。

小強(qiáng)點(diǎn)評(píng):我們總是覺(jué)得要用高級(jí)點(diǎn)的技術(shù)才顯得牛逼,其實(shí)這是裝逼。當(dāng)年在新浪的時(shí)候我們對(duì)數(shù)據(jù)庫(kù)做了大量的分庫(kù)分表,但最后帶來(lái)的性能提升并不明顯。我一直強(qiáng)調(diào)技術(shù)是服務(wù)于業(yè)務(wù)的,只有把業(yè)務(wù)的特性明確了,根據(jù)業(yè)務(wù)來(lái)使用合理的技術(shù)才會(huì)能大的提升,否則就是適得其反。

宅米網(wǎng)性能優(yōu)化實(shí)踐(內(nèi)附小強(qiáng)點(diǎn)評(píng))

總結(jié)


性能問(wèn)題是實(shí)打?qū)嵉膯?wèn)題,解決辦法也應(yīng)該針對(duì)具體問(wèn)題各個(gè)擊破。通過(guò)性能測(cè)試了解系統(tǒng)現(xiàn)狀,通過(guò)瓶頸分析發(fā)現(xiàn)具體問(wèn)題,針對(duì)具體問(wèn)題尋找解決方案,實(shí)現(xiàn)解決方案再進(jìn)行性能測(cè)試,整個(gè)性能優(yōu)化形成閉環(huán),系統(tǒng)得以持續(xù)優(yōu)化。

小強(qiáng)點(diǎn)評(píng):性能優(yōu)化是一個(gè)持續(xù)的過(guò)程,沒(méi)有誰(shuí)能一步優(yōu)化道到位,也沒(méi)有誰(shuí)可以優(yōu)化到極致。他需要你有完善的知識(shí)體系,各個(gè)方面都要懂一些,并不是大家想的會(huì)一個(gè)LoadRunner或jmeter就可以完成的,這些只是性能中的很小的一部分而已。讓我們一起加油吧。


分享題目:宅米網(wǎng)性能優(yōu)化實(shí)踐(內(nèi)附小強(qiáng)點(diǎn)評(píng))-創(chuàng)新互聯(lián)
分享地址:http://muchs.cn/article44/dsephe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、自適應(yīng)網(wǎng)站域名注冊(cè)、定制網(wǎng)站網(wǎng)站制作、定制開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站