千家信息网

php+nginx服务发生500、502错误怎么办

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了php+nginx服务发生500、502错误怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。概述当线上的服务中访
千家信息网最后更新 2026年11月02日php+nginx服务发生500、502错误怎么办

这篇文章主要介绍了php+nginx服务发生500、502错误怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

概述

当线上的服务中访问中出现500或者502错误时,需要紧急处理,排查问题,该怎么做?可以通过分析一些错误日志或者跟踪php-fpm进程来进行问题定位。

nginx error_log

nginx的error_log在nginx的配置文件中定义的

server { listen  80; server_name localhost; root   /var/www; access_log /Users/jiao/logs/default.access.log; error_log /Users/jiao/logs/default.error.log; location / {  index index.html index.htm index.php;  autoindex on; } location = /info {  allow 127.0.0.1;  deny all;  rewrite (.*) /.info.php; } location ~ \.php$ {  root /var/www;  fastcgi_pass 127.0.0.1:9000;  fastcgi_index index.php;  fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;  include /usr/local/etc/nginx/fastcgi_params; }}

查看error_log

➜ tail /Users/jiao/logs/default.error.log
2019/07/17 11:08:18 [error] 77416#0: *76 kevent() reported about an closed connection (54: Connection reset by peer) while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost"

发现出现了Connection reset by peer,连接被重置了,此时可以再查看php-fpm的error_log进一步分析问题

php-fpm error_log

php-fpm的error_log在php-fpm.conf文件中配置中定义的

; Error log file; If it's set to "syslog", log is sent to syslogd instead of being written; in a local file.; Note: the default prefix is /usr/local/var; Default Value: log/php-fpm.logerror_log = log/php-fpm.log

error_log里面的内容是这样的

➜ tail /usr/local/var/log/php-fpm.log[17-Jul-2019 10:49:54] NOTICE: [pool www] child 81948 started[17-Jul-2019 11:08:18] WARNING: [pool www] child 77537, script '/var/www/index.php' (request: "GET /index.php") execution timed out (3.801267 sec), terminating[17-Jul-2019 11:08:18] WARNING: [pool www] child 77537 exited on signal 15 (SIGTERM) after 1503.113967 seconds from start[17-Jul-2019 11:08:18] NOTICE: [pool www] child 94339 started

可以看到是请求/var/www/index.php文件出现了超时

dtruss

dtruss是动态跟踪命令,可以根据PID,name跟踪进程

mac环境下使用dtruss,linux环境可以使用strace,pstack

➜ dtruss USAGE: dtruss [-acdefholLs] [-t syscall] { -p PID | -n name | command | -W name }
  -p PID   # examine this PID  -n name   # examine this process name  -t syscall  # examine this syscall only  -W name   # wait for a process matching this name  -a    # print all details  -c    # print syscall counts  -d    # print relative times (us)  -e    # print elapsed times (us)  -f    # follow children  -l    # force printing pid/lwpid  -o    # print on cpu times  -s    # print stack backtraces  -L    # don't print pid/lwpid  -b bufsize  # dynamic variable buf size

eg,

 dtruss df -h  # run and examine "df -h" dtruss -p 1871  # examine PID 1871 dtruss -n tar  # examine all processes called "tar" dtruss -f test.sh # run test.sh and follow children

跟踪php-fpm:sudo dtruss -a -n php-fpm

此时访问web页面,就可以看到跟踪内容

21416/0x3479b6:  1559  63  3 getrusage(0x0, 0x7FFEE1EC0760, 0x0)   = 0 021416/0x3479b6:  1561  4  0 getrusage(0xFFFFFFFFFFFFFFFF, 0x7FFEE1EC0760, 0x0)   = 0 021416/0x3479b6:  1627  77  17 poll(0x7FFEE1EC08C0, 0x1, 0x1388)   = 1 0dtrace: error on enabled probe ID 2174 (ID 159: syscall::read:return): invalid kernel access in action #13 at DIF offset 68dtrace: error on enabled probe ID 2174 (ID 159: syscall::read:return): invalid kernel access in action #13 at DIF offset 68dtrace: error on enabled probe ID 2174 (ID 159: syscall::read:return): invalid kernel access in action #13 at DIF offset 68dtrace: error on enabled probe ID 2174 (ID 159: syscall::read:return): invalid kernel access in action #13 at DIF offset 68dtrace: error on enabled probe ID 2174 (ID 159: syscall::read:return): invalid kernel access in action #13 at DIF offset 6821416/0x3479b6:  1872  29  24 lstat64("/var/www/index.php\0", 0x7FFEE1ECFF38, 0x0)   = 0 021416/0x3479b6:  1884  9  6 lstat64("/var/www\0", 0x7FFEE1ECFDF8, 0x0)   = 0 021416/0x3479b6:  1889  6  3 lstat64("/var\0", 0x7FFEE1ECFCB8, 0x0)   = 0 021416/0x3479b6:  1899  12  8 readlink("/var\0", 0x7FFEE1ED0090, 0x400)   = 11 021416/0x3479b6:  1905  6  4 lstat64("/private/var\0", 0x7FFEE1ECFB78, 0x0)   = 0 021416/0x3479b6:  1917  6  3 lstat64("/private\0", 0x7FFEE1ECFA38, 0x0)   = 0 021416/0x3479b6:  2178  18  14 stat64("/var/www/.user.ini\0", 0x7FFEE1ED0240, 0x0)   = -1 Err#221416/0x3479b6:  2217  5  1 setitimer(0x2, 0x7FFEE1ED07E0, 0x0)   = 0 021416/0x3479b6:  2225  4  0 sigaction(0x1B, 0x7FFEE1ED0788, 0x7FFEE1ED07B0)   = 0 021416/0x3479b6:  2237  5  1 sigprocmask(0x2, 0x7FFEE1ED0804, 0x0)   = 0x0 021416/0x3479b6:  3643  48  40 open_nocancel(".\0", 0x0, 0x1)   = 5 021416/0x3479b6:  3648  7  3 fstat64(0x5, 0x7FFEE1ED0110, 0x0)   = 0 021416/0x3479b6:  3653  7  2 fcntl_nocancel(0x5, 0x32, 0x10F252158)   = 0 021416/0x3479b6:  3661  12  7 close_nocancel(0x5)   = 0 021416/0x3479b6:  3670  10  7 stat64("/usr/local/var\0", 0x7FFEE1ED0080, 0x0)   = 0 021416/0x3479b6:  3681  11  8 chdir("/var/www\0", 0x0, 0x0)   = 0 021416/0x3479b6:  3698  4  0 setitimer(0x2, 0x7FFEE1ED02D0, 0x0)   = 0 021416/0x3479b6:  3710  6  3 fcntl(0x3, 0x8, 0x10F3FD858)   = 0 021416/0x3479b6:  3733  9  6 stat64("/private/var/www/index.php\0", 0x7FFEE1ECFF10, 0x0)   = 0 074904/0x332630: 723125 1073381  19 kevent(0x9, 0x0, 0x0)   = 0 074902/0x332629: 770666 1073387  17 kevent(0x8, 0x0, 0x0)   = 0 074904/0x332630: 723165 1061954  20 kevent(0x9, 0x0, 0x0)   = 0 074902/0x332629: 770709 1061954  20 kevent(0x8, 0x0, 0x0)   = 0 074904/0x332630: 723201 1074786  16 kevent(0x9, 0x0, 0x0)   = 0 074902/0x332629: 770747 1074783  16 kevent(0x8, 0x0, 0x0)   = 0 074904/0x332630: 723229 1069141  13 kevent(0x9, 0x0, 0x0)   = 0 074902/0x332629: 770777 1069145  11 kevent(0x8, 0x0, 0x0)   = 0 021416/0x3479b6:  3942 3902233  7 __semwait_signal(0x703, 0x0, 0x1)   = -1 Err#474902/0x332629: 770814  103  25 kill(21416, 15)   = 0 0dtrace: error on enabled probe ID 2172 (ID 161: syscall::write:return): invalid kernel access in action #13 at DIF offset 68dtrace: error on enabled probe ID 2172 (ID 161: syscall::write:return): invalid kernel access in action #13 at DIF offset 6874902/0x332629: 771325  7  2 sigreturn(0x7FFEE1ECFC40, 0x1E, 0xC1A4B78E0404663A)   = 0 Err#-274902/0x332629: 771336  7  3 kevent(0x8, 0x0, 0x0)   = 1 0dtrace: error on enabled probe ID 2174 (ID 159: syscall::read:return): invalid kernel access in action #13 at DIF offset 6874902/0x332629: 771352  11  7 wait4(0xFFFFFFFFFFFFFFFF, 0x7FFEE1ED0748, 0x3)   = 21416 0dtrace: error on enabled probe ID 2172 (ID 161: syscall::write:return): invalid kernel access in action #13 at DIF offset 6874902/0x332629: 773511 1957 1899 fork()   = 28060 028060/0x3754c5:  125:  0:  0 fork()   = 0 028060/0x3754c5:  128  9  2 bsdthread_register(0x7FFF6774C418, 0x7FFF6774C408, 0x2000)   = -1 Err#22dtrace: error on enabled probe ID 2172 (ID 161: syscall::write:return): invalid kernel access in action #13 at DIF offset 6874902/0x332629: 773737  4  1 wait4(0xFFFFFFFFFFFFFFFF, 0x7FFEE1ED0748, 0x3)   = 0 074902/0x332629: 773742  6  3 read(0x5, "\0", 0x1)   = -1 Err#3528060/0x3754c5:  320  4  0 getpid(0x0, 0x0, 0x0)   = 28060 028060/0x3754c5:  328  7  2 __mac_syscall(0x7FFF67758A17, 0x4, 0x7FFEE1ED0208)   = -1 Err#4528060/0x3754c5:  332  5  2 csops(0x6D9C, 0xB, 0x7FFEE1ED0248)   = -1 Err#2228060/0x3754c5:  755  14  11 dup2(0x1, 0x2, 0x0)   = 2 028060/0x3754c5:  797  89  22 close(0x4)   = 0 028060/0x3754c5:  806  11  6 dup2(0x7, 0x0, 0x0)   = 0 028060/0x3754c5:  817  4  0 geteuid(0x0, 0x0, 0x0)   = 501 028060/0x3754c5:  820  3  0 close(0x5)   = 0 028060/0x3754c5:  821  3  0 close(0x6)   = 0 028060/0x3754c5:  824  5  1 sigaction(0xF, 0x7FFEE1ED0688, 0x0)   = 0 028060/0x3754c5:  825  3  0 sigaction(0x2, 0x7FFEE1ED0688, 0x0)   = 0 028060/0x3754c5:  827  3  0 sigaction(0x1E, 0x7FFEE1ED0688, 0x0)   = 0 028060/0x3754c5:  828  3  0 sigaction(0x1F, 0x7FFEE1ED0688, 0x0)   = 0 028060/0x3754c5:  829  3  0 sigaction(0x14, 0x7FFEE1ED0688, 0x0)   = 0 028060/0x3754c5:  830  3  0 sigaction(0x3, 0x7FFEE1ED0688, 0x0)   = 0 028060/0x3754c5:  1043  3  0 close(0x7)   = 0 0

可以看到系统底层执行的函数,如lstat64获取文件内容信息,kill(21416, 15)kill掉php-fpm进程,fork()出新的php-fpm进程。

感谢你能够认真阅读完这篇文章,希望小编分享的"php+nginx服务发生500、502错误怎么办"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

跟踪 错误 文件 篇文章 进程 服务 内容 问题 怎么办 环境 分析 配置 价值 信息 兴趣 函数 动态 可以通过 同时 命令 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网新科技 广州淘业互联网络科技 蓝思科技飞鸽互联网 互联网金融监管科技数据 互联网属科技 合肥互联网科技公司 迪茉互联网科技 海南科技产业互联网平台 温州喔噻互联网科技有限公司 互联网教育科技公司vipkid 科技与互联网哪个更好 互联网大会黑科技排名 知域互联网科技有限公司大骗子 江阴互联网智能科技产品进口 互联网科技商业 链环科技传统企业怎么转型互联网 江苏互联网智能科技软件 富国互联网科技002692 上海乐五互联网科技有限公司 网互联网络科技 互联网科技图片 广东万易互联网科技有限公司惠州分公司 伟宏互联网科技 疫情对互联网科技公司影响 互联网络科技有限公司 居家互联网科技有限公司 滨湖区互联网智能科技产品供应 江苏南京365互联网科技 深圳市优智互联网科技有限公司 知域互联网科技有限公司官网
0