>  기사  >  백엔드 개발  >  php-fpm7.0 느린 쿼리 설정 및 지침 정보

php-fpm7.0 느린 쿼리 설정 및 지침 정보

藏色散人
藏色散人앞으로
2021-04-16 09:24:361948검색

이 글은 php-fpm7.0의 느린 쿼리 설정과 지침을 소개합니다. 필요한 친구들이 참고할 수 있기를 바랍니다.

추천 학습: "PHP 비디오 튜토리얼"

환경 설명

root@ubuntu:/home/tb# cat /etc/issue
Ubuntu 16.04.2 LTS \n \l

root@ubuntu:/home/tb# php -v
PHP 7.0.15-0ubuntu0.16.04.4 (cli) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.15-0ubuntu0.16.04.4, Copyright (c) 1999-2017, by Zend Technologies

php-fpm 구성 경로 보기

root@ubuntu:/home/tb# ps -ef |grep fpm
root      1642     1  0 10:17 ?        00:00:01 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)
www-data  3685  1642  0 17:14 ?        00:00:04 php-fpm: pool www
www-data  3686  1642  0 17:14 ?        00:00:03 php-fpm: pool www
www-data  3808  1642  0 17:43 ?        00:00:03 php-fpm: pool www
root      3930  2208  0 18:10 pts/0    00:00:00 grep --color=auto fpm
root@ubuntu:/home/tb#

php- fpm .conf의 마지막 줄php-fpm.conf的最后一行为

include=/etc/php/7.0/fpm/pool.d/*.conf

那我们去那里改www.conf,查看关于慢查询的介绍

314 ; The log file for slow requests
315 ; Default Value: not set
316 ; Note: slowlog is mandatory if request_slowlog_timeout is set
317 ;slowlog = log/$pool.log.slow
318
319 ; The timeout for serving a single request after which a PHP backtrace will be
320 ; dumped to the 'slowlog' file. A value of '0s' means 'off'.
321 ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
322 ; Default Value: 0
323 ;request_slowlog_timeout = 0

添加两行配置

slowlog=/var/log/php7.0/fpm/slow.log
request_slowlog_timeout=1s

重启fpm,同时注意目录权限等一般问题

service php7.0-fpm reload

查看log回显结果

[03-Jan-2018 18:48:53]  [pool www] pid 4934
script_filename = /usr/share/nginx/ testapp/index.php
[0x00007fb626213520] session_start() /usr/share/nginx/ testapp/app/models/user_model.php:11
[0x00007fb6262134a0] __construct() /usr/share/nginx/ci_2.2.0/core/Loader.php:303
[0x00007fb626213390] model() /usr/share/nginx/ testapp/app/core/my_Controller.php:39
[0x00007fb6262132e0] __construct() /usr/share/nginx/ testapp/app/controllers/home.php:8
[0x00007fb626213270] __construct() /usr/share/nginx/ci_2.2.0/core/CodeIgniter.php:308
[0x00007fb6262130e0] [INCLUDE_OR_EVAL]() /usr/share/nginx/ testapp/index.php:325

[03-Jan-2018 18:48:53]  [pool www] pid 4931
script_filename = /usr/share/nginx/ testapp/index.php
[0x00007fb626213520] session_start() /usr/share/nginx/ testapp/app/models/user_model.php:11
[0x00007fb6262134a0] __construct() /usr/share/nginx/ci_2.2.0/core/Loader.php:303
[0x00007fb626213390] model() /usr/share/nginx/ testapp/app/core/my_Controller.php:39
[0x00007fb6262132e0] __construct() /usr/share/nginx/ testapp/app/controllers/home.php:8
[0x00007fb626213270] __construct() /usr/share/nginx/ci_2.2.0/core/CodeIgniter.php:308
[0x00007fb6262130e0] [INCLUDE_OR_EVAL]() /usr/share/nginx/ testapp/index.php:325

关于log的说明

[03-Jan-2018 18:48:53]  [pool www] pid 4931

这个没啥解释,时间进程id

script_filename = /usr/share/nginx/ testapp/index.php

执行脚本名称,php web应用都为单入口

[0x00007fb626213520] session_start() /usr/share/nginx/ testapp/app/models/user_model.php:11

这个第三行比较重要:是堆栈顶部信息(is the top of the stack trace),他说明指出了超出了阈值的当前执行的方法的函数调用是哪个,以及具体的文件及代码行数
剩下的其他部分就是 调用的顺序(从下往上,最终导致变慢超时的结果)

其他说明

如果发现第三行是以类似curl_exec(),比如:这一般是网络io占用了时间,如果是必须请求第三方,那么。。忍吧。

[0x00007fb6262136f0] curl_exec() /usr/share/nginx/

同样,如果有mysql_query之类的,也是由于sqlrrreee

그럼 거기로 가서 www.conf를 변경하고 느린 쿼리에 대한 소개를 확인하세요
rrreee

두 줄의 구성을 추가하세요

rrreee

fpm을 다시 시작하세요 , 그리고 주의하세요 디렉터리 권한 등 일반적인 문제

rrreee

로그 에코 결과 확인

rrreee
로그에 대한 설명
rrreee

이에 대한 설명은 없습니다. 시간 프로세스 ID
rrreee

실행 스크립트 이름, php 웹 응용 프로그램은 모두 단일 항목🎜rrreee🎜이 장에서는 세 줄이 더 중요합니다. 스택 추적의 맨 위입니다. 현재 실행 중인 메서드의 어떤 함수 호출이 임계값을 초과하는지와 특정 파일 및 코드 줄 수를 나타냅니다. 나머지는 호출 순서입니다(아래에서 위로, 결국 속도 저하 및 시간 초과 결과로 이어짐)🎜🎜기타 지침🎜🎜세 번째 줄이 무언가로 시작하는 것을 발견하면 curl_exec() 와 같습니다. 예를 들면 다음과 같습니다. 이는 일반적으로 네트워크 io가 시간을 소모하기 때문입니다. 그렇다면 제3자를 요청해야 합니다. . 참아보세요. 🎜rrreee🎜마찬가지로 mysql_query 등이 있으면 sql 느린 쿼리🎜🎜🎜참조 링크🎜🎜php-fpm 구성: https:/ /www .php.net/manual/en/install.fpm.configuration.php🎜🎜how-to-read-the-php-slow-request-log: https://serverpilot.io/docs/how-to- 읽기-php-slow-request-log/🎜🎜🎜🎜🎜🎜

위 내용은 php-fpm7.0 느린 쿼리 설정 및 지침 정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제