iralance / myblog

notes
0 stars 0 forks source link

php-fpm慢日志查询 #30

Open iralance opened 6 years ago

iralance commented 6 years ago

开发过程中,监控php脚本状态,记录执行速度慢的进程

  1. 修改php-fpm,打开慢日志
    设置request_slowlog_timeout =1;  (超出一秒记录)
    slowlog = /Users/qianlei/tmp/php_slow.log
  2. 重启php-fpm
  3. 加测试代码
    
    a.php
    <?php
    sleep(2);
    echo 'aaaa';
    exit();

test.php <?php $url = "http://test.cc/a.php"; $post_data = ['data' => ''];

$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);
//设置post数据

curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
//执行命令
$data = curl_exec($curl);
//关闭URL请求
curl_close($curl);
//显示获得的数据
var_dump($data);
调用test.php  可以看到slow_php.log
![image](https://user-images.githubusercontent.com/4393443/33248606-79fe5008-d2eb-11e7-9bae-09bf0d32b69a.png)

ps:一般情况下,都是通过调第三方接口会导致这问题,也可以下方写入日志的方式来定时分析
    curl_init();
    $t1 = microtime(1);
    $result = curl_exec($ch);

    // slow network nodelog
    $error = curl_error($ch);
    $info = curl_getinfo($ch);
    $needLog = (microtime(1) - $t1 > 0.3) || !empty($error);