php-fpm的一次慢执行日志slow log

测试环境、预发布环境经过QA多番测试没有遇到问题,但在一次上线过程中,在线上环境出现20秒的响应超时,这个毫无疑问,环境问题。

尽管线上数据量大,可Mysql以不至于慢到20秒,而且发现每次技术都是20.01~20.04秒之间,相差不到一秒钟,mysql也不至于这么均匀,在好奇心下,运维大神配合查了一下Mysql慢查询日志,发现没有超时的sql日志,那这有可能就是php这边出现的问题,可一想,逻辑执行也总不能这么慢。想打日志一步步跟踪,这种方式有点慢。mysql 有慢查询,同样咱php也有慢日志。

使用php slow方式确实找到了问题所在,截图如下:

pconnect()原因导致,这个我当然清楚,是因为连接redis失败导致。 因为是在新的服务器,所以连接不上核心项目的redis服务器,最终还是运维大神安装的证书解决。

解决了问题后,大概了解如下:

一、开启slow log方法:
如果你使用php-fpm来管理php的话,你可以通过如下方法开启:

首先打开 php-fpm.conf 配置文件。

vim /usr/local/php/etc/php-fpm.conf

PHP 5.3.3 之前设置如下:

<value name="request_slowlog_timeout">5s</value>
< value name="slowlog">logs/php-fpm-slowlog.log</value>

PHP 5.3.3 之后设置以下如下:

request_slowlog_timeout = 5s
slowlog = /usr/local/php/var/log/php-fpm-slowlog.log
request_terminate_timeout = 10s

说明:
request_slowlog_timeout 是脚本超过多长时间,就可以记录到日志文件;
slowlog 是日志文件的存储路径;
request_terminate_timeout 将执行时间太长的进程直接终止;

二、slow log如何使用?
开启后,如果有脚本执行超过指定的时间,就会在指定的日志文件中写入类似如上图所示,执行格式:pid  进程号

日志说明:

script_filename 是入口文件
curl_exec() : 说明是执行这个方法的时候超过执行时间的。
exfilter_curl_get() :说明调用curl_exec()的方法是exfilter_curl_get() 。

每行冒号后面的数字是行号。

开启后,在错误日志文件中也有相关记录...去日志查看就可以了

原文地址:https://www.cnblogs.com/wt645631686/p/12173664.html

时间: 2024-08-12 23:51:13

php-fpm的一次慢执行日志slow log的相关文章

正确安全清空在线慢查询日志slow log的流程

查看慢查询日志的状态: mysql> show variables like '%slow%'; +---------------------+-----------------------------+ | Variable_name | Value | +---------------------+-----------------------------+ | log_slow_queries | ON | | slow_launch_time | 2 | | slow_query_log

五十一、php-fpm的pool、php-fpm慢执行日志、open_basedir、php-fpm

五十一.php-fpm的pool.php-fpm慢执行日志.open_basedir.php-fpm进程管理 一.php-fpm的pool pool:右侧.ps aux最右侧的那一列.就是它的池子. # cd /usr/local/php-fpm/etc # cat php-fpm.conf    //支持定义多个池子 [global] pid = /usr/local/php-fpm/var/run/php-fpm.pid error_log = /usr/local/php-fpm/var/

LNMP_PHP慢执行日志

PHP慢执行日志slowlog = /usr/local/php-fpm/var/log/slow.logrequest_slowlog_timeout = 1 vim   /usr/local/php/etc/php-fpm.conf /usr/local/nginx_php/sbin/php-fpm -t 定义open_basedir /usr/local/nginx_php/sbin/php-fpm -t 动态.静态子进程pm = static/dynamic如果选择static,则由pm

关于EF输出sql的执行日志

sqlserver中可以使用sql profiler:但是mysql当中无法查看:只能借助于组件: ADO.NET Entity Framework CodeFirst 如何输出日志(EF4.3) 用的EFProviderWrappers ,这个组件好久没有更新了,对于SQL执行日志的解决方案的需求是杠杠的,今天给大家介绍一个更好的组件Clutch.Diagnostics.EntityFramework,可以通过Nuget 获取: 这个框架定义了一个接口 IDbTracingListener:

工作执行日志编写

1 /// <summary> 2 /// 路径 3 /// </summary> 4 static string log = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, string.Format("DMS_{0}.log", DateTime.Today.ToString("yyyy-MM-dd"))); 5 //异常记录 6 #region

在程序中使用命令打开一个进程和记录该进程执行日志

//在需要的程序中调用ExcutedCmd函数来打开执行dos命令 //cmd 命令  args 命令参数 private static void ExcutedCmd(string cmd, string args) { using (Process p = new Process()) { ProcessStartInfo psi = new ProcessStartInfo(cmd, args); psi.CreateNoWindow = true; psi.UseShellExecute

linux下打开、关闭tomcat,实时查看tomcat执行日志

?? 启动:通常是运行sh tomcat/bin/startup.sh 停止:通常是运行sh tomcat/bin/shutdown.sh脚本命令 查看:运行ps -ef |grep tomcat 输出例如以下 *** 5144   .. .等等.Bootstrap start 说明tomcat已经正常启动. 5144 就为进程号 pid = 5144 杀死:kill -9 5144 ------------------------linux下实时查看tomcat执行日志------------

.Net写txt文件-简单的记录执行日志信息代码

在执行一些批量操作时,想记录一些执行日志信息,越简单方便越好啊.提供一个常用的简单方法,将信息记录在txt文件里: public static void log(string content, string path) { string strFileName = path; //判断是否存在 if (File.Exists(strFileName)) { //存在 StreamWriter wlog; wlog = File.AppendText(strFileName); wlog.Writ

php-fpm的pool、慢执行日志、进程管理、open_basedir

php-fpm的pool 为了避免因多站点使用同一个pool时因一个站点故障导致pool出问题,进而影响使用同一个pool的其他站点的正常运行,要对每个站点配置一个单独的pool. 为php-fpm增加pool 编辑php-fpm配置文件:......[huang.com]listen = /tmp/huang.socklisten.mode = 666user = php-fpmgroup = php-fpmpm = dynamicpm.max_children = 50pm.start_se