PHP-FPM中启用慢日志配置(用于检测执行较慢的PHP脚本)
简介某些时候在寻找某个接口反映较慢的排除方法,除了从网络和服务器的硬件上面排除外,可能还需要我们通过PHP-FPM来排查问题。所以本文我们将说明如何通过PHP-FPM来查询慢日志,帮我们来排查相关问题。
开启php-fpm的慢日志
首先需要定位自己安装php目录,然后再etc/php-fpm.d目录下找到对应的配置文件,如我这里配置的为www.conf,文件中有如下信息:
; The log file for slow requests ; Default Value: not set ; Note: slowlog is mandatory if request_slowlog_timeout is set ;slowlog = log/$pool.log.slow ; The timeout for serving a single request after which a PHP backtrace will be ; dumped to the 'slowlog' file. A value of '0s' means 'off'. ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) ; Default Value: 0 ;request_slowlog_timeout = 0 ; Depth of slow log stack trace. ; Default Value: 20 ;request_slowlog_trace_depth = 20
上面:
- slowlog:是需要存放慢日志的文件路径
- request_slowlog_timeout:慢日志的时间,如果为0表示不开启
- request_slowlog_trace_depth:慢日志跟踪的堆栈深度
开启慢日志必须要将slowlog和request_slowlog_timeout开启才行,slowlog设置后一定要在php的安装目录下新建一个log目录,否则重启会失败,所以这里我们只需要将前面的分号去掉即可,去掉后重启php-fpm即可。在log目录下多了一个www.log.slow的文件。
测试
我这里通过一个laravel项目中写了一个sleep(10);代码,然后运行,观察慢日志文件发现:
script_filename = /home/laravel/public/index.php [0x00007f9c13822000] sleep() /home/laravel/app/Http/Controllers/TestController.php:39 [0x00007f9c13821930] index() /home/laravel/vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54 [0x00007f9c138218c0] call_user_func_array() /home/laravel/vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54 [0x00007f9c13821820] callAction() /home/laravel/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:45 [0x00007f9c13821720] dispatch() /home/laravel/vendor/laravel/framework/src/Illuminate/Routing/Route.php:212 [0x00007f9c13821680] runController() /home/laravel/vendor/laravel/framework/src/Illuminate/Routing/Route.php:169 [0x00007f9c13821590] run() /home/laravel/vendor/laravel/framework/src/Illuminate/Routing/Router.php:658 [0x00007f9c13821480] Illuminate\Routing\{closure}() /home/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:30 [0x00007f9c138213b0] Illuminate\Routing\{closure}() /home/laravel/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php:41 [0x00007f9c138212a0] handle() /home/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:149 [0x00007f9c13821090] Illuminate\Pipeline\{closure}() /home/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53 [0x00007f9c13820f50] Illuminate\Routing\{closure}() /home/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php:68 [0x00007f9c13820cb0] handle() /home/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:149 [0x00007f9c13820aa0] Illuminate\Pipeline\{closure}() /home/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53 [0x00007f9c13820960] Illuminate\Routing\{closure}() /home/laravel/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php:49 [0x00007f9c13820850] handle() /home/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:149 [0x00007f9c13820640] Illuminate\Pipeline\{closure}() /home/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53 [0x00007f9c13820500] Illuminate\Routing\{closure}() /home/laravel/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:63 [0x00007f9c138203a0] handle() /home/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:149 [0x00007f9c13820190] Illuminate\Pipeline\{closure}() /home/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
这样我们就很非常容易定位某个代码执行时间较长的位置。
在使用功能镜像的时候,需要对时区进行修改,那么就需要从两个方面来考虑,本文主要记录Dockerfile和docker-compose.yml设置时区。
《是妈妈是女儿》聚焦母女间未曾言明的爱意,以书信对话的形式呈现出各自的内心独白,表达彼此的牵挂。黄绮珊与希林娜依·高用跨越时空、打开心扉、深情对唱的形式,将天下母女爱的寄语化作心灵的倾诉。黄绮珊的每一句话,每一个字都演绎出了妈妈对女儿的爱,而希林依娜·高把女儿对妈妈的爱由不理解到理解再到感恩演绎得淋漓尽致。
OpenCV-Python读取、显示和保存图片,主要介绍如下函数的使用:imread、imshow、imwrite。读取图片使用imread函数,注意:opencv读取图片,默认颜色通道是BGR,而不是RGB。使用imshow函数即可,第一个参数表示窗口名称,第二个参数就是要显示的图像。保存图片使用imwrite函数, 第一个参数为要保存的路径和名称,第二个参数为图片,最后一个参数为可选项。
安装strapi出现错误:error Error: certificate has expired,TypeError: Cannot read properties of undefined (reading 'addBreadcrumb')
you-get是一个基于Python的开源命令行工具,主要用于下载来自多个视频网站的视频、音频和图片资源。它支持YouTube、Bilibili、Vimeo等平台,可通过简单命令快速获取下载链接并支持自定义保存路径和格式。
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。