webman的接口,请求耗时浮动非常大

kylin87

问题描述

同样的接口,同样的参数,同样的时间段,请求的时候,有时候几十毫秒,有时候却1秒多

尝试用xhprof进行分析

发现main函数浮动非常大,如下图所示,两个请求一模一样,但是main()的耗时,却有百倍的差距
截图
截图

排查出来原因了

当业务在使用Redis的时候,有时候就会很慢,我写了一段测试代码,复现了这个情况

public function index()
    {
        $data = [];
        $startTime = microtime(true);
        $data[] = $startTime;
        Redis::set('aa', 3333);
        $data[] = microtime(true);
        Redis::get('aa');
        $data[] = microtime(true);
        return json($data);
    }

代码非常简单,大部分请求,都是几十ms,但是偶尔会出现1秒多的情况,下面是返回的结果

[
    1708932845.55133,
    1708932847.131441,
    1708932847.137989
]

排查出来更多的问题,链接本地的redis没问题。代码和框架应该都没问题,问题可能出在了阿里云的redis了

473 4 0
4个回答

xiuwang

自己看下你的main函数里各个地方哪里耗时,这个不是webman问题了

  • kylin87 2024-02-26

    我没有写main函数

  • xiuwang 2024-02-26

    搜了下webman也没main函数,main()不是链接嘛,你点进去看详情

  • xiuwang 2024-02-26

    阿里云redis会自动清理连接,清理后连接会超时

kylin87

另外,我发现我本地用127来请求,没有这么大的波动。
线上的用了cdn和负载均衡,不知道有没有这个影响

  • TM 2024-02-26

    本地一般超级快都是几十毫秒的,跑内网也可以。走外网就慢很多了

gddd

和框架没有半毛钱关系的。感觉是网络的波动,垃圾的ssl也有影响

  • 暂无评论
TM

一般是连接时间吧,我请求云数据库有时候也是也要100多毫秒,有时候20多毫秒,连接服务时间占挺多的

  • 暂无评论
🔝