中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

宅米網性能優化實踐(內附小強點評)

發布時間:2020-08-06 21:54:11 來源:ITPUB博客 閱讀:175 作者:testingbang 欄目:軟件技術

背景介紹


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


初識架構


宅米網性能優化實踐(內附小強點評)

這樣的系統能不能應對今后快速的業務發展?性能問題會不會成為持續增長的交易量的瓶頸?系統能不能撐得住訪問高峰期的大規模并發訪問? 性能優化成為這個時候最重要的工作,于是安排專門的工程師進行性能測試和性能優化,從架構、代碼、數據庫、運維各個層面梳理系統狀況,發現系統瓶頸,進行針對性優化。

小強點評:這種架構是初識架構,一般系統都是在這個架構上進行逐步演化的,掌握基本的架構知識對于測試工程師來說十分重要。


性能測試


校園零食購物的特點是在晚上10點左右進入高峰,在此前后一小時的交易量大概占整天交易量的一半,也就是說,如果要設計一個日訂單100萬的系統,其實要承受的交易壓力是每小時50萬單。

當初按照二八法則推算峰值每秒單量為556筆,以此為基準根據Nginx日志分析后端接口調用頻率,推算出接口調用比率前20的請求,以此構造測試場景。

在執行性能測試時,我們使用Jmeter作為性能測試工具,利用了云服務提供的系統資源監控作為基礎。

小強點評:很多人一直糾結并發數怎么去算,其實算法非常多,在小強性能測試培訓班中就講了大概4種算法,個人覺得根本不存在準確不準確的問題,關鍵是在你的應用場景,這世上哪里有絕對的準確?


架構優化


宅米網性能優化實踐(內附小強點評)

性能測試結果并不樂觀,雖然系統此前使用了分布式緩存對熱點數據進行緩存,但是比較隨意,哪些數據需要緩存,失效策略如何設置都沒有認真分析和設計。性能測試后決定規范緩存使用,盡可能將各種頻繁讀取的數據全部緩存起來,并將Redis服務器做集群和主從復制部署。

小強點評:緩存帶來的效果是明顯的,一般對于大量數據的查詢我們都要首先考慮緩存方面的優化。當然,這里說的是后端緩存,對于前端的緩存也需要考慮。

此外還使用第三方CDN服務進行靜態文件訪問加速,產品圖片、JavaScript文件、CSS文件等都通過CDN加速,同時通過Nginx反向代理服務器提供靜態文件的前端緩存。

小強點評:這些都是偏向于前端性能優化方面的問題了,感興趣的可以看我的前端性能測試視頻。

性能測試發現,系統主要瓶頸點在數據庫上,雖然使用Redis將熱點數據緩存起來,但是數據庫依然在并發量達到一定程度后表現出系統過載的情況。于是對數據庫進行主從分離。


sql語句優化


性能測試過程中發現,由于此前主要精力都在關注如何快速實現業務,大量數據庫查詢語句寫得比較隨意,索引設計非常不合理。 結合性能測試中Mysql數據庫slow.log分析,定位慢查詢SQL追加index,然后利用解釋執行計劃explain優化SQL

小強點評:任何系統在sql語句方面多多少少肯定會有問題,一般我們的方法就是慢查詢監控>top N語句分析>優化改進。思路基本都是這樣,具體的做法各不相同,靈活應對。


數據庫連接池優化


在做性能測試的時候發現在某些情況下有較為嚴重的性能問題。在高并發情況下,長時間施加壓力,應用程序出現不能訪問的狀況。

上網查找資料,發現很多人也遇到了C3P0的”APPARENT DEADLOCK”問題。

將C3P0切換成國產數據庫連接池Druid之后,狀況明顯好轉,類似問題再未出現過。

小強點評:C3P0確實有一些小bug。后來我們也用了阿里開源的Druid目前來看還是不錯的哦,可以嘗試一下。


H5響應壓縮優化


開啟Nginx gzip壓縮 降低App響應數據包大小,提高響應性能

小強點評:前端的性能優化,不論是app、h6還是web都是一樣的,我們很多童鞋學的太死板,沒有做到一通百通。


訂單數據冷熱分離


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

小強點評:我們總是覺得要用高級點的技術才顯得牛逼,其實這是裝逼。當年在新浪的時候我們對數據庫做了大量的分庫分表,但最后帶來的性能提升并不明顯。我一直強調技術是服務于業務的,只有把業務的特性明確了,根據業務來使用合理的技術才會能大的提升,否則就是適得其反。

宅米網性能優化實踐(內附小強點評)

總結


性能問題是實打實的問題,解決辦法也應該針對具體問題各個擊破。通過性能測試了解系統現狀,通過瓶頸分析發現具體問題,針對具體問題尋找解決方案,實現解決方案再進行性能測試,整個性能優化形成閉環,系統得以持續優化。

小強點評:性能優化是一個持續的過程,沒有誰能一步優化道到位,也沒有誰可以優化到極致。他需要你有完善的知識體系,各個方面都要懂一些,并不是大家想的會一個LoadRunner或jmeter就可以完成的,這些只是性能中的很小的一部分而已。讓我們一起加油吧。



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安西县| 依兰县| 长兴县| 杭锦旗| 高唐县| 青田县| 乌海市| 武川县| 平昌县| 当阳市| 历史| 若尔盖县| 丽水市| 南部县| 辽宁省| 县级市| 桑植县| 清水河县| 龙泉市| 成安县| 胶州市| 科尔| 天津市| 九台市| 嘉荫县| 前郭尔| 马关县| 巴里| 宝清县| 桐庐县| 新巴尔虎左旗| 浪卡子县| 贵定县| 禹城市| 土默特左旗| 黎川县| 青冈县| 丹棱县| 抚州市| 康乐县| 苏州市|