REST 接口里传 Base64 会导致一段时间后响应越来越慢吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aizya
V2EX    Java

REST 接口里传 Base64 会导致一段时间后响应越来越慢吗?

  •  
  •   aizya 2024-07-31 13:44:51 +08:00 3340 次点击
    这是一个创建于 503 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前的小项目里提供了一个 REST 接口,接口一堆参数,其中包含一个 image 图片,用的是 base64 传递。这个接口主要逻辑是处理一段业务后,将 base64 图片会存到本地。

    就这样一个接口,发布之后每隔一段时间就会出现几次请求超时的情况,正常情况接口再 100ms 以内响应的,但是运行一段时间后,有时会超过 10s 以上才给响应,甚至超时的情况。

    现在想解决这个问题,做了如下处理:

    1. 用 apifox 开多个线程调用接口,问题可以复现
    2. 把 base64 去掉,不传,问题不再复现
    3. 传 base64 ,但是接口里面所有的逻辑都注释掉,问题也可以复现

    那是不是意味着 REST 请求数据包就不能太大,能通过配置的方式缓解/解决这个问题吗?

    求教~

    18 条回复    2024-08-01 11:41:43 +08:00
    lsk569937453
        1
    lsk569937453  
       2024-07-31 14:08:34 +08:00
    开发语言用的什么啊,可以把复现的代码直接放到 gist 上,分分钟就给你解决了。

    REST 接口里传 Base64 会导致一段时间后响应越来越慢吗?
    答案:不会。
    furlxy
        2
    furlxy  
       2024-07-31 14:13:29 +08:00
    写死一段短一点的 base64 看看呢,我猜是你内容太多了
    mxT52CRuqR6o5
        3
    mxT52CRuqR6o5  
       2024-07-31 14:13:41 +08:00
    有没有可能是把图片存到挂载到内存文件系统的目录里了,时间长了内存就爆了
    lovedebug
        4
    lovedebug  
       2024-07-31 14:16:30 +08:00
    GET 请求? 小心超长~
    sazima
        5
    sazima  
       2024-07-31 14:19:21 +08:00
    是不是把 base64 字符串写到日志里面了。
    tf2
        6
    tf2  
       2024-07-31 14:32:04 +08:00
    这么卡? gzip 一下试试。
    pigf
        7
    pigf  
       2024-07-31 14:43:48 +08:00
    cnzjl
        8
    cnzjl  
       2024-07-31 14:48:53 +08:00
    感觉是不是写入图片那部分导致的,加点 log 看看?
    evan1
        9
    evan1  
    PRO
       2024-07-31 14:57:10 +08:00
    图片 base64 太长了吧。

    换一个短一点的,然后再换一个超长的复现看看。
    CHTuring
        10
    CHTuring  
       2024-07-31 15:04:56 +08:00
    理论上来说传一个数据比较多的 base64 会影响,但是不会有你说的 10s 那么大。和上面说的那样,你应该主要测试写入的代码。
    gzldc
        11
    gzldc  
       2024-07-31 15:13:13 +08:00
    我们是图片存 oss ,api 只返回图片 uri
    wws2023
        12
    wws2023  
       2024-07-31 16:42:36 +08:00
    哪里 io 占用了吧
    nevermoreluo
        13
    nevermoreluo  
       2024-07-31 17:05:05 +08:00
    我有个问题
    把 base64 去掉的时候,对程序做额外处理了吧,如果还用 string 传包体,图片还完整吗?怎么处理的,直接存到 string 然后\0 就不管了吗?
    有没有部分图片小了很多很多?
    所以有没有可能问题一直有 只是把 base64 去掉的时候,搞错东西了
    artiga033
        14
    artiga033  
       2024-07-31 17:25:16 +08:00 via Android
    曾经有个项目就是一大堆高清图片作为 base64 文本嵌入,一个接口响应有 7MB 多,但是主要也是网络传输时间,接口响应速度还是微秒级
    musi
        15
    musi  
       2024-08-01 07:44:52 +08:00 via iPhone
    io 被阻塞了?你用 form 传试试要是还慢就是阻塞了
    aizya
        16
    aizya  
    OP
       2024-08-01 09:23:58 +08:00
    @wws2023
    @musi 有啥办法可以查看 io 占用情况吗? Linux 电脑上直接用 top 看?
    cppc
        17
    cppc  
       2024-08-01 11:30:36 +08:00
    用这个去定位问题 https://arthas.aliyun.com/ 你可以稳定重现就好说
    BeUself
        18
    BeUself  
       2024-08-01 11:41:43 +08:00
    不会导致越来越慢
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5239 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 07:55 PVG 15:55 LAX 23:55 JFK 02:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86