php cli 模式 curl请求越来越慢

背景

项目使用workerman,其中有一块代码,会定时通过curl发送一个https请求,通知php-fpm。最近发现一个诡异的问题,程序刚开的时候正常没有问题,但是运行了几天 business处理请求就会异常的慢。上服务器查看status,发现进场是进场进入busy状态。

处理

因为是服务器内部的请求,所以就把ssl证书的校验关闭了

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);

代码示例

 '!QAZ2wsxfuck$001789', 'roomId' => 83];
        //初始化
        $curl = curl_init();
        //设置抓取的url
        curl_setopt($curl, CURLOPT_URL, $url);
        //设置头文件的信息作为数据流输出
        //curl_setopt($curl, CURLOPT_HEADER, 1);
        //设置获取的信息以文件流的形式返回,而不是直接输出。
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        //设置post方式提交
        curl_setopt($curl, CURLOPT_POST, 1);

        // 设置超时时间
        curl_setopt($curl, CURLOPT_TIMEOUT, 3);

        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        //执行命令
        $result = curl_exec($curl);
        var_dump($result);
        //关闭URL请求
        curl_close($curl);
        $endTime = microtime(TRUE);
        echo "cost time " . ($endTime - $startTime). PHP_EOL;
        //sleep(10);
        usleep(50000);
    }

一开没有关闭ssl证书校验的时候,发送几千的请求之后,curl的时间耗时就会超过一秒

4343 cost time 1.6078729629517
4344 cost time 1.413125038147
4345 cost time 1.4656598567963
4346 cost time 1.5153200626373
4347 cost time 1.4436540603638
4348 cost time 1.570643901825
4349 cost time 1.4153439998627
4350 cost time 1.5104820728302

关闭之后,即使上w个请求 耗时几乎没有什么大的波动

75154 cost time 0.014031171798706
75156 cost time 0.01432204246521"
75158 cost time 0.016821146011353
75160 cost time 0.013806104660034
75162 cost time 0.014341115951538

你可能感兴趣的:(linux,php)