培訓(xùn)列表頁性能優(yōu)化報告


響應(yīng)時間和訪問量

訪問量
響應(yīng)時間

  • 訪問量高峰期過萬畔规,平時日訪問量過千
  • 高峰期響應(yīng)時間 400~1000ms,平時400ms
  • 2臺服務(wù)器
  • 500+行代碼

代碼結(jié)構(gòu)問題

  • 內(nèi)部耦合性強序愚,內(nèi)聚性差
  • 可讀性差蚂子,注釋少
  • 代碼質(zhì)量差,潛伏bug多,出問題難以排查

優(yōu)化目標

  • 優(yōu)化響應(yīng)時間汰现,800ms較慢
  • 重構(gòu)代碼氛谜,加上必要注釋,便于后期維護

性能優(yōu)化

添加機器

mp_server_1
mp_server_2

分析:目前mobile-web兩臺機器酝惧,分析某一天(平常時候6月2號)機器榴鼎,兩臺機器的CPU使用率,發(fā)現(xiàn)比較正常晚唇,沒有過載的情況巫财。五月底因為某一天訪問量過高,CPU使用率一度升到40~60%哩陕。

優(yōu)化方案:

  • 通讀代碼平项,發(fā)現(xiàn)很多循環(huán)SQL的情況,即根據(jù)列表ID悍及,循環(huán)查詢數(shù)據(jù)庫闽瓢,可以將這些合并為一次IO,一次查詢盡可能多的數(shù)據(jù)(在網(wǎng)絡(luò)不是瓶頸的情況下)

  • 不少方法內(nèi)部邏輯類似心赶,可以優(yōu)化為一個方法

  • 不少大表沒有建相應(yīng)的索引扣讼,全表掃描緩慢,可以針對性的建索引


循環(huán)查詢優(yōu)化

循環(huán)查詢的代碼:

pro_循環(huán)查詢.JPG

使用 sqlalchemy in_語句缨叫,用mysql in來一次性查詢椭符,減少IO次數(shù)荔燎。

pro_循環(huán)優(yōu)化.JPG

完全沒有優(yōu)化的情況:

get_status_方法未優(yōu)化.JPG

未優(yōu)化時候,getTrainingListWithStatus方法耗時1400+ms销钝,優(yōu)化后有咨,響應(yīng)時間減少到1300+ms,減少了100多ms蒸健。

get_status_優(yōu)化后.JPG

合并相同邏輯優(yōu)化

獲取培訓(xùn)列表方法getTrainingList中座享,內(nèi)部有個代碼片段,循環(huán)調(diào)用了兩個內(nèi)部邏輯大致相同的方法纵装,多了一次IO征讲,優(yōu)化一下,可以減少一倍的耗時橡娄。

get_train_list_未優(yōu)化.JPG
get_train_list_重復(fù)邏輯的代碼.JPG

可以合并為一個IO诗箍,然后作為參數(shù)傳入這兩個方法。

優(yōu)化以后挽唉,get_train_list方法耗時從1000+ms降到500+ms滤祖,減少了一倍。

get_train_list優(yōu)化以后.JPG

建索引優(yōu)化:

培訓(xùn)列表涉及的數(shù)據(jù)表有:

  • transporter_training; //表數(shù)據(jù)總量508瓶籽,一個city_id 有15-50條數(shù)據(jù); 目前有一個 id 索引匠童;擬在上面建city_id索引
  • transporter_training_course; //表數(shù)據(jù)總量19105,目前有id索引塑顺,teacher_id索引汤求;擬在上面建(training_id,is_del)索引
  • transporter_training_signup; //表數(shù)據(jù)50多萬,目前只有一個id索引严拒;擬建(transporter_id,is_valid,training_type)索引
  • training_online;//表數(shù)據(jù)90多萬扬绪,989802,目前只有一個id索引裤唠,為全表掃描挤牛;擬建 transporter_id 索引

添加索引后的優(yōu)化情況

分析:添加索引后,整個training_list 耗時從1200+ms減少到890+ms种蘸。 可見添加索引后性能大大提升墓赴。


我的優(yōu)化到此結(jié)束,謝謝航瞭!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末诫硕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子刊侯,更是在濱河造成了極大的恐慌痘括,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異纲菌,居然都是意外死亡,警方通過查閱死者的電腦和手機疮绷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門翰舌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人冬骚,你說我怎么就攤上這事椅贱。” “怎么了只冻?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵庇麦,是天一觀的道長。 經(jīng)常有香客問我喜德,道長山橄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任舍悯,我火速辦了婚禮航棱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘萌衬。我一直安慰自己饮醇,他們只是感情好,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布秕豫。 她就那樣靜靜地躺著朴艰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪混移。 梳的紋絲不亂的頭發(fā)上祠墅,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音沫屡,去河邊找鬼饵隙。 笑死,一個胖子當著我的面吹牛沮脖,可吹牛的內(nèi)容都是我干的金矛。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼勺届,長吁一口氣:“原來是場噩夢啊……” “哼驶俊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起免姿,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤饼酿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體故俐,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡想鹰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了药版。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辑舷。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖槽片,靈堂內(nèi)的尸體忽然破棺而出何缓,到底是詐尸還是另有隱情,我是刑警寧澤还栓,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布碌廓,位于F島的核電站,受9級特大地震影響剩盒,放射性物質(zhì)發(fā)生泄漏谷婆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一勃刨、第九天 我趴在偏房一處隱蔽的房頂上張望波材。 院中可真熱鬧,春花似錦身隐、人聲如沸廷区。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽隙轻。三九已至,卻和暖如春垢揩,著一層夾襖步出監(jiān)牢的瞬間玖绿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工叁巨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留斑匪,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓锋勺,卻偏偏與公主長得像蚀瘸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子庶橱,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容