当前位置: 首页 > news >正文

12.22 php-fpm慢执行日志

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

php-fpm慢执行日志目录概要

  • vim /usr/local/php-fpm/etc/php-fpm.d/www.conf//加入如下内容
request_slowlog_timeout = 1
slowlog = /usr/local/php-fpm/var/log/www-slow.log

  • 配置nginx的虚拟主机test.com.conf,把unix:/tmp/php-fcgi.sock改为unix:/tmp/www.sock
  • 重新加载nginx服务
  • vim /data/wwwroot/test.com/sleep.php//写入如下内容
<?php 
echo “test slow log”;
sleep(2);echo “done”;
?>

  • curl -x127.0.0.1:80 test.com/sleep.php
  • cat /usr/local/php-fpm/var/log/www-slow.log

php-fpm慢执行日志

  • 在做php网站的时候,建议使用lnmp,因为我们可以分析php的慢执行
  • 查询方法:
    • 1.系统负载,可以通过各种工具查,查出是哪个进程导致
    • 2.PHP网站访问慢,通过查看慢日志
  1. 配置www.conf 在配置文件中加入
request_slowlog_timeout = 1    //超过一秒钟就要记录日志
slowlog = /usr/local/php-fpm/var/log/www-slow.log    //日志放到该路径下

最终如下

[root@hanfeng php-fpm.d]# vim www.conf

[www]
listen = /tmp/php-fcgi.sock
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
request_slowlog_timeout = 1
slowlog = /usr/local/php-fpm/var/log/www-slow.log
保存退出
  1. 查看语法错误,并重新加载
[root@hanfeng php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -t
[10-Jan-2018 00:04:26] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful

[root@hanfeng php-fpm.d]# /etc/init.d/php-fpm reload
Reload service php-fpm  done
[root@hanfeng php-fpm.d]# 
  1. 查看/usr/local/php-fpm/var/log/www-slow.log日志是否生成
[root@hanfeng php-fpm.d]# ls /usr/local/php-fpm/var/log/
php-fpm.log  www-slow.log
[root@hanfeng php-fpm.d]# 
  1. 查看日志会看到没有内容,因为没有超过一秒php执行的过程
[root@hanfeng php-fpm.d]# cat /usr/local/php-fpm/var/log/www-slow.log 
[root@hanfeng php-fpm.d]# 
  1. 模拟一个慢执行的php,写一个脚本,由于php-fcgi它是被在test这个站点用着,所以需要在这个/data/wwwroot/test.com目录下做一些操作
[root@hanfeng php-fpm.d]# vim /data/wwwroot/test.com/sleep.php
加入php休眠两秒钟,故意让它执行慢
<?php
echo “test slow log”;
sleep(2);echo “done”;
?>
保存退出
  • php可以不换行,写成一行
  1. 运行php脚本,但是未输出信息,检测会看到状态码为500,说明有错误
[root@hf-01 php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php
[root@hf-01 php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php -I
HTTP/1.1 500 Internal Server Error
Server: nginx/1.12.1
Date: Tue, 09 Jan 2018 21:47:48 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30

[root@hf-01 php-fpm.d]# 

  1. 可以查看错误日志,但有更简单的方法就是打开它的配置文件
[root@hf-01 php-fpm.d]#  vim /usr/local/php-fpm/etc/php.ini

搜索 /display ,找到display_errors

将display_errors = Off 改为display_errors = On

  1. 打开display_errors之后,就可以在浏览器上查看到具体的错误是什么
  2. 重启php
[root@hf-01 php-fpm.d]# /etc/init.d/php-fpm reload
Reload service php-fpm  done
[root@hf-01 php-fpm.d]# 
  1. 检查错误,会看到语法错误,有可能是逗号,分号写的不对
[root@hf-01 php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php
<br />
<b>Parse error</b>:  syntax error, unexpected 'slow' (T_STRING), expecting ',' or ';' in <b>/data/wwwroot/test.com/sleep.php</b> on line <b>2</b><br />
[root@hf-01 php-fpm.d]# 
  1. 检查sleep.php文件,发现里面使用的中文标点,更改后重启配置
[root@hf-01 php-fpm.d]# vim /data/wwwroot/test.com/sleep.php

<?php
echo "test slow log";
sleep(2);
echo "done";
?>
保存退出
[root@hf-01 php-fpm.d]# /etc/init.d/php-fpm reload
Reload service php-fpm  done
[root@hf-01 php-fpm.d]# 
  1. 再来测试,访问成功,会看到访问的时候停顿了几秒
[root@hf-01 php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php
test slow logdone[root@hf-01 php-fpm.d]# 
  1. 查看是否生成了慢日志
[root@hf-01 php-fpm.d]# cat /usr/local/php-fpm/var/log/www-slow.log 

[10-Jan-2018 06:02:21]  [pool www] pid 3442
script_filename = /data/wwwroot/test.com/sleep.php        //提示:是哪个脚本慢
[0x00007f37c5f7c298] sleep() /data/wwwroot/test.com/sleep.php:3    //提示:是脚本的第三慢
[root@hf-01 php-fpm.d]# 

  1. 这个就是慢执行日志的功效
  2. 在遇到php网站访问慢的时候,就可以去查看慢日志
  3. 查看www.conf
[root@hf-01 php-fpm.d]# cat www.conf
[www]
listen = /tmp/php-fcgi.sock
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
request_slowlog_timeout = 1    //一般写两秒,很多脚本都会超过一秒
slowlog = /usr/local/php-fpm/var/log/www-slow.log
[root@hf-01 php-fpm.d]# 

转载于:https://my.oschina.net/u/3707314/blog/1604290

相关文章:

  • SIGTERM SIGINT
  • 3分钟实操机器学习原理,这里有一个不挑人的模型 | 包教包会
  • nginx负载均衡与反向代理配置文件分析实例
  • 第 26 章 MySQL
  • 如何确保SWF文件Hash值相同
  • 2017JavaScript框架战报——React分战场
  • 整理Java基础知识--Character类
  • 网上购物系统(Task005)——通用数据库访问函数集SqlHelper类
  • mysql 密码重置
  • 微软产品组里的十一类人
  • window10转Windows7
  • java生成缩略图
  • Docker 运行 jar
  • 在区块链上表白——使用C#将一句话放入比特币的区块链上
  • Powershell for循环语句示例
  • 【EOS】Cleos基础
  • css属性的继承、初识值、计算值、当前值、应用值
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • FastReport在线报表设计器工作原理
  • Java-详解HashMap
  • nodejs调试方法
  • underscore源码剖析之整体架构
  • unity如何实现一个固定宽度的orthagraphic相机
  • 对JS继承的一点思考
  • 聊聊redis的数据结构的应用
  • 如何编写一个可升级的智能合约
  • 三分钟教你同步 Visual Studio Code 设置
  • 十年未变!安全,谁之责?(下)
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 突破自己的技术思维
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 微信小程序开发问题汇总
  • 微信小程序填坑清单
  • 写给高年级小学生看的《Bash 指南》
  • 带你开发类似Pokemon Go的AR游戏
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​力扣解法汇总946-验证栈序列
  • #14vue3生成表单并跳转到外部地址的方式
  • #pragma multi_compile #pragma shader_feature
  • #pragma 指令
  • #Spring-boot高级
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (007)XHTML文档之标题——h1~h6
  • (4)事件处理——(7)简单事件(Simple events)
  • (9)目标检测_SSD的原理
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (TOJ2804)Even? Odd?
  • (笔试题)分解质因式
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (强烈推荐)移动端音视频从零到上手(下)