zoukankan      html  css  js  c++  java
  • 记一次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库的序列化对比

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

  • 相关阅读:
    1.Oracle12cR1的集群件及其组件
    28.oracle监听开启trace file
    connection strings for sql server 2005
    MDAC(Introduce to Microsoft Data Access Components)
    动态链接导入库与静态链接库
    vue3.0小印象
    vue3.0中的vite如何引入markdown文件为页面
    算法
    适配器模式(转载)
    WEB即时通讯之 XMPP OPENFIRE strophe JAXL
  • 原文地址:https://www.cnblogs.com/s686zhou/p/12911515.html
Copyright © 2011-2022 走看看