• 记一次flask web接口速度优化


    本项目采用 flask + mongodb

    速度贼慢

    先上图

    network上的查看 TTFB 请求时间过长

    POSTMAN 中 查看同样是8秒多  

     

    因此 我们要找找问题在哪

    解决方法

    首先查明是TTFB时间过长,是后端服务器导致的接口速度过慢。

    单个接口单次访问速度过慢原因列举(这里我们锁定3点):

    1.无可避免首先要检查数据库的查询速度

     这是数据库查询的速度   是0.028s 。 很显然并不是数据库查询导致的原因。

    2.整体的代码逻辑是否过于复杂导致速度很慢 (很轻易就能排除)

    3.这也是我最终发现的(不同的json序列化会导致时间长短不一致)

    这里是最重要的一点, 因为本项目采取的是MongoDB数据库。 因而它本身是bson数据格式。

    而python的第三方模块中 有bson包中的 json_utils 能够帮助序列化。 因此一开始选择了它。

    但是当我查看速时居然发现是json序列化的时候导致时间过慢

     1.65S左右。

    json序列化与反序列化速度对比(按总时间排序:测试数据100 * 10000)
     
    ujson           序列化: 2.084    反序列化: 1.157      总时间: 3.241
    yajl            序列化: 1.910    反序列化: 1.970      总时间: 3.880
    cjson           序列化: 3.305    反序列化: 1.328      总时间: 4.632
    simplejson      序列化: 10.279   反序列化: 4.658      总时间: 14.937
    stdlib json     序列化: 7.013    反序列化: 8.594      总时间: 15.607

    上面是python中 5个json库的序列化对比

    因此,我选择了其中最快的尝试了一下。果然 速度显著提升。 

  • 相关阅读:
    晕倒的AIX
    MySQL Replication(zt)
    pxe启动网络安装CentOS(win平台)(zt)
    几句比较实用的script
    改注册表方式防DDOS攻击[ZT]
    一个免费空间列表相对集中的地方
    CREE LED的一个小资料
    下一步准备研究的东西:rsync远程同步
    PXE启动安装Linux (zt)
    系统调用
  • 原文地址:https://www.cnblogs.com/s686zhou/p/12911515.html
Copyright © 2020-2023  润新知