V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ReinerShir
V2EX  ›  Java

问一个困扰了我两天的技术问题,微信小程序用户请求同一个接口 session 会阻塞

  •  
  •   ReinerShir · 2021-04-01 16:54:17 +08:00 · 1755 次点击
    这是一个创建于 1333 天前的主题,其中的信息可能已经有所发展或是发生改变。

    场景如下: 小程序,有两个用户同时访问同一个接口会阻塞,第二个请求的人必须请等一个请求的人处理完毕才会响应第二个请求。

    但如果我在 PC 上用两个不同的浏览器同时请求这个接口,是并行的,从结果上来看可能是 session 阻塞,即同一个会话同时只能处理一个请求。

    技术框架是 spring boot,HTTPS,我知道 spring mvc 可以异步返回,但我不想这么做,因为我打印了这两个用户的 session id,发现他们是不一样的,所以不应该被别为同一个会话,按我的理解它应该是并行处理才对。

    请教大佬给予解答!

    第 1 条附言  ·  2021-04-02 10:58:29 +08:00
    解决了,各位,前端每次请求时都生成一个随机数作为 sessionId,而不是使用默认微信浏览器生成的。

    个破微信真垃圾
    9 条回复    2021-04-02 09:47:34 +08:00
    themostlazyman
        1
    themostlazyman  
       2021-04-01 17:03:06 +08:00
    有表锁,或者分布锁吧。
    iyaozhen
        2
    iyaozhen  
       2021-04-01 17:08:14 +08:00
    这个要看你这个接口处理了什么?现在信息不好判断吧
    xuanbg
        3
    xuanbg  
       2021-04-01 17:14:05 +08:00
    很简单,在接口内部第一行和返回前打印一下 start/end 日志,如果是 start,start,end,end,就是内部问题。start,end,start,end,这就是外部阻塞了。
    shanghai1943
        4
    shanghai1943  
       2021-04-01 17:30:25 +08:00
    可以先试试 3 楼老哥的做法看看。排查一下是在 controller 层外部排队还是在 controller 层内部排队,然后再看看对应的措施。
    joesonw
        5
    joesonw  
       2021-04-01 18:08:42 +08:00
    网关导致的?
    gitdoit
        6
    gitdoit  
       2021-04-02 08:47:47 +08:00
    打日志啊,看看请求有没有同时到达。没有就是外部原因了
    ReinerShir
        7
    ReinerShir  
    OP
       2021-04-02 09:16:21 +08:00
    @shanghai1943
    @xuanbg
    @iyaozhen
    @gitdoit

    打了日志的,请求没有同时到达,而是等第一个请求结束后第二个请求的日志才打印
    ReinerShir
        8
    ReinerShir  
    OP
       2021-04-02 09:17:59 +08:00
    @gitdoit
    @xuanbg 关于外部原因,我也曾想过是不是微信浏览器的问题,但是找了一圈微信文档没发现有什么配置,有点束手无策了
    shanghai1943
        9
    shanghai1943  
       2021-04-02 09:47:34 +08:00
    那是不是客户端发出来的就是串行的了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5968 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 03:21 · PVG 11:21 · LAX 19:21 · JFK 22:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.