培训列表页性能优化报告


响应时间和访问量

访问量
响应时间

  • 访问量高峰期过万,平时日访问量过千
  • 高峰期响应时间 400~1000ms,平时400ms
  • 2台服务器
  • 500+行代码

代码结构问题

  • 内部耦合性强,内聚性差
  • 可读性差,注释少
  • 代码质量差,潜伏bug多,出问题难以排查

优化目标

  • 优化响应时间,800ms较慢
  • 重构代码,加上必要注释,便于后期维护

性能优化

添加机器

mp_server_1
mp_server_2

分析:目前mobile-web两台机器,分析某一天(平常时候6月2号)机器,两台机器的CPU使用率,发现比较正常,没有过载的情况。五月底因为某一天访问量过高,CPU使用率一度升到40~60%。

优化方案:

  • 通读代码,发现很多循环SQL的情况,即根据列表ID,循环查询数据库,可以将这些合并为一次IO,一次查询尽可能多的数据(在网络不是瓶颈的情况下)

  • 不少方法内部逻辑类似,可以优化为一个方法

  • 不少大表没有建相应的索引,全表扫描缓慢,可以针对性的建索引


循环查询优化

循环查询的代码:

pro_循环查询.JPG

使用 sqlalchemy in_语句,用mysql in来一次性查询,减少IO次数。

pro_循环优化.JPG

完全没有优化的情况:

get_status_方法未优化.JPG

未优化时候,getTrainingListWithStatus方法耗时1400+ms,优化后,响应时间减少到1300+ms,减少了100多ms。

get_status_优化后.JPG

合并相同逻辑优化

获取培训列表方法getTrainingList中,内部有个代码片段,循环调用了两个内部逻辑大致相同的方法,多了一次IO,优化一下,可以减少一倍的耗时。

get_train_list_未优化.JPG
get_train_list_重复逻辑的代码.JPG

可以合并为一个IO,然后作为参数传入这两个方法。

优化以后,get_train_list方法耗时从1000+ms降到500+ms,减少了一倍。

get_train_list优化以后.JPG

建索引优化:

培训列表涉及的数据表有:

  • transporter_training; //表数据总量508,一个city_id 有15-50条数据; 目前有一个 id 索引;拟在上面建city_id索引
  • transporter_training_course; //表数据总量19105,目前有id索引,teacher_id索引;拟在上面建(training_id,is_del)索引
  • transporter_training_signup; //表数据50多万,目前只有一个id索引;拟建(transporter_id,is_valid,training_type)索引
  • training_online;//表数据90多万,989802,目前只有一个id索引,为全表扫描;拟建 transporter_id 索引

添加索引后的优化情况

分析:添加索引后,整个training_list 耗时从1200+ms减少到890+ms。 可见添加索引后性能大大提升。


我的优化到此结束,谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容