概述当访问在线服务时出现500或502错误,需要紧急处理以排查问题。我应该怎么办?可以通过分析一些错误日志或者跟踪php-fpm进程来定位问题。nginxerror_lognginx的error_log定义在nginx的配置文件server{listen80;服务器名称本地主机;根目录/var/www;access_log/Users/jiao/logs/default.access.log;error_log/Users/jiao/logs/default.错误日志;location/{indexindex.htmlindex.htmindex.php;自动索引;}location=/info{允许127.0.0.1;全部拒绝;重写(.*)/.info.php;}位置~\.php${root/var/www;fastcgi_pass127.0.0.1:9000;fastcgi_indexindex.php;fastcgi_paramSCRIPT_FILENAME/var/www$fastcgi_script_name;包括/usr/local/etc/nginx/fastcgi_params;Users/jiao/logs/default.error.log2019/07/1711:08:18[error]77416#0:*76kevent()在从上游,客户端:127.0.0.1,server:localhost,request:"GET/HTTP/1.1",upstream:"fastcgi://127.0.0.1:9000",host:"localhost"Connectionresetbypeerwasfound,连接被重置现在可以查看php-fpm的error_log进一步分析问题。php-fpmerror_logphp-fpm的error_log定义在php-fpm.conf文件中的配置中;错误日志文件;如果设置为“syslog”,日志将发送到syslogd而不是写入;在本地文件中。注意:默认前缀为/usr/local/var;默认值:log/php-fpm.logerror_log=log/php-fpm.logerror_log里面的内容是这样的?tail/usr/local/var/log/php-fpm.log[17-Jul-201910:49:54]注意:[poolwww]child81948started[17-Jul-201911:08:18]WARNING:[poolwww]child77537,script'/var/www/index.php'(request:"GET/index.php")执行超时(3.801267秒),终止[2019年7月17日11:08:18]警告:[poolwww]child77537在开始1503.113967秒后退出信号15(SIGTERM)[17-Jul-201911:08:18]NOTICE:[poolwww]child94339started可以看作是请求/var/www/index.php文件已经超时dtrussdtruss是一个动态跟踪命令,可以根据PID,名称跟踪进程mac环境下使用dtruss,linux环境可以使用strace,pstack?dtrussUSAGE:dtruss[-acdefholLs][-tsyscall]{-pPID|-n名称|命令|-Wname}-pPID#检查此PID-nname#检查此进程名称-tsyscall#仅检查此系统调用-Wname#等待匹配此名称的进程-a#打印所有详细信息-c#打印系统调用计数-d#打印相对时间(us)-e#打印运行时间(us)-f#followchildren-l#forceprintingpid/lwpid-o#printoncputimes-s#printstackbacktraces-L#don'tprintpid/lwpid-bbufsize#动态变量bufsizeeg,dtrussdf-h#运行并检查“df-h”dtruss-p1871#检查PID1871dtruss-ntar#检查所有进程called"tar"dtruss-ftest.sh#runtest.shandfollowchildren跟踪php-fpm:sudodtruss-a-nphp-fpm此时访问网页,就可以看到跟踪内容21416/0x3479b6:1559633getrusage(0x0,0x7FFEE1EC0760,0x0)=0021416/0x3479b6:156140getrusage(0xFFFFFFFFFFFFFFFF,0x7FFEE1EC0760,0x0)=0021416/0x3479b6:16277717poll(0x7FFEE1EC08C0,0x1,0x1388)=10dtrace:erroronenabled探测器ID2174(ID159:系统调用::读取:返回):DIF偏移量68dtrace处的操作#13中的内核访问无效:启用的探测器ID2174(ID159:系统调用::读取:返回):无效的内核访问在操作中#13在DIF偏移量68dtrace上:启用的探测器ID2174上的错误(ID159:系统调用::读取:返回):操作中的无效内核访问#13在DIF偏移量68dtrace上:启用的探测器ID2174上的错误(ID159:系统调用::读取:返回):在DIF偏移量68dtrace处的操作#13中无效的内核访问:启用的探测器ID2174上的错误(ID159:syscall::read:return):在DIF偏移量6821416/0x3479b6:18722924lstat64(“/var/www/index.php\0”,0x7FFEE1ECFF38,0x0)=0021416/0x3479b6:188496lstat64("/var/www\0",0x7FFEE1ECFDF8,0x0)=0021416/0x3479b6:188963lstat64("/var\0",0x7FFEE1ECFCB8,0x0)=0021416/0x3479b6:1899128readlink("/var\0",0x7FFEE1ED0090,0x400)=11021416/0x3479b6:190564lstat64("/private/var\0",0x7FFEE1ECFB78,0x0)=0021416/0x3479b6:191763lstat64("/private83FFEE",ECFA3FF1ECF,0x0)=0021416/0x3479b6:21781814stat64("/var/www/.user.ini\0",0x7FFEE1ED0240,0x0)=-1Err#221416/0x3479b6:221751setitimer(0x2,0x7FFEE1ED07E0,0x0)=0021416/0x3479b6:222540sigaction(0x1B,0x7FFEE1ED0788,0x7FFEE1ED07B0)=0021416/0x3479b6:223751sigprocmask(0x2,0x7ffee1ed0804,0x0)=0x0021416/0x3479b6:36434840Open_nocancel(“。0x0)=0021416/0x3479b6:365372fcntl_nocancel(0x5,0x32,0x10f252158)=0021416/0x3479b6:3661127collect_nocancel(0x5)\0",0x7FFEE1ED0080,0x0)=0021416/0x3479b6:3681118chdir("/var/www\0",0x0,0x0)=0021416/0x3479b6:369840setitimer(0x2,0x7FFEE1ED02D)0=,0x00021416/0x3479b6:371063fcntl(0x3,0x8,0x10F3FD858)=0021416/0x3479b6:373396stat64("/private/var/www/index.php\0",0x7FFEE1ECFF10,0x0)=04/0740x332630:723125107338119kevent(0x9,0x0,0x0)=0074902/0x332629:770666107338717kevent(0x8,0x0,0x0)=0074904/0x332630:723165106195420kevent(0x9,0x0,0x0)=0074902/0x332629:770709106195420kevent(0x8,0x0,0x0)=0074904/0x332630:723201107478616kevent(0x9,0x0,0x0)=0074902/0x332629:770747107478316kevent(0x8,0x0,0x0)=0074904/0x332630:723229106914113kevent(0x9,0x0,0x0)=0074902/0x332629:770777106914511Kevent(0x8,0x0,0x0)=0021416/0x3479b6:3942kill(21416,15)=00dtrace:启用的探测器ID2172错误(ID161:syscall::write:return):DIF偏移量68dtrace处的操作#13中的内核访问无效:启用的探测器ID2172错误(ID161:syscall::write:return):在DIF偏移量6处的操作#13中无效的内核访问874902/0x332629:77132572SIGRETURN(0x7ffee1ecfc40,0x1e,0xc1a4b78e0404663a)=0::read:return):在DIF偏移量6874902/0x332629处的操作#13中无效的内核访问:771352117wait4(0xFFFFFFFFFFFFFFFF,0x7FFEE1ED0748,0x3)=214160dtrace:启用的探测器ID2172上的错误(ID161:syscall::write:return):在DIF偏移量6874902/0x332629:77351119571899fork()=28060028060/0x3754c5:125:0:0fork()=0028060/0x3754c5:12892bsd4F4FF_register16(,0x7FFF6774C408,0x2000)=-1Err#22dtrace:启用探测器ID2172时出错(ID161:syscall::write:return):在DIF偏移量6874902/0x332629:77373741wait4(0xFFFFFFFFFFFFFFFF,0x7FFEE1ED0748,0x3)=0074902/0x332629:77374263读取(0x5,“\0”,0x1)=-1Err#3528060/0x3754c5:32040getpid(0x0,0x0,8206)=00x3754c5:32872__mac_syscall(0x7FFF67758A17,0x4,0x7FFEE1ED0208)=-1Err#4528060/0x3754c5:33252csops(0x6D9C,0xB,0x7FFEE1ED0248)=-1Err#2228060/0x3754c5:7551411dup2(0x1,0x2,0x0)=2028060/0x3754c5:7978922关闭(0x4)=0028060/0x3754c5:806116dup2(0x7,0x0,0x0)=0028060/0x3754c5:81740geteuid(0,0x0,0x0)=501028060/0x3754C5:82030关闭(0x5)=0028060/0x3754C5:82130关闭(0x6)=0028060/0x3754C5:8245:82451sigaction(sigaction(0xf,0xf,0x7f,0x7ffeefeman30sigaction(0x2,0x7ffee1ed0688,0x0)=0028060/0x3754c5:82730sigaction(0x1e,0x7ffee1ed0688,0x0,0x0,0x0)=0028060/0x3754c5:0x3754c5:828302830sigigrigen30sigigrative82930sigaction(0x14,0x7FFEE1ED0688,0x0)=0028060/0x3754c5:83030sigaction(0x3,0x7FFEE1ED0688,0x0)=0028060/0x3754c5:10433007可以看到底层系统执行的函数aslstat64获取文件内容信息,kill(21416,15)杀掉php-fpm进程,fork()新建php-fpm进程,有兴趣可以深入研究各个命令的作用.参考https://www.cnblogs.com/leezh...
