HTTP状态码499/500/502/504

编程

1** :临时响应并需要请求者继续执行操作;

2**:请求成功。操作被成功接收接收并处理;

3**:重定向代码,需要进一步的操作以完成请求;

4**:客户端错误,请求包含语法错误或者无法完成请求;

5**:服务器错误,服务器在处理请求的过程中发生错误;

在日常工作中,经常遇到 HTTP 的错误码,下面,我们尝试着去追踪

2,实验环境默认配置

2.1 Nginx配置

http {

access_log /var/log/nginx/access.log;

error_log /var/log/nginx/error.log;

}

server {

listen 80;

server_name www.test.com;

root /opt/wwwroot/test;

# index index.php;

location / {

#index index.html index.htm index.php;

try_files $uri $uri/ /index.php?$query_string;

autoindex on;

}

location ~ .php(.*)$ {

#fastcgi_pass 127.0.0.1:9000;

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.3-fpm.sock;

fastcgi_split_path_info ^((?U).+.php)(/?.+)$;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_param PATH_INFO $fastcgi_path_info;

fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

fastcgi_connect_timeout 5; # nginx连接fastcgi的超时时间

fastcgi_send_timeout 10; #nginx往fastcgi发送参数的超时时间

fastcgi_read_timeout 10; #nginx从fastcig获取数据的超时时间

include fastcgi_params;

}

}

2.2 PHP配置

2.2.1 php-fpm (我本地是www.conf)

pm.max_children = 5 //最大worker数量

request_terminate_timeout = 30 //请求终止执行超时时间,worker执行时间超过该时间后,请求将被终止

access.log = /var/log/php7.3-fpm.access.log //php-fpm请求日志

request_slowlog_timeout = 1 //慢处理超时时间,处理事件超过该时间的请求将被记录到slowlog中

slowlog = /var/log/php7.3-fpm.log.slow //php-fpm慢处理日志

2.2.2 php.ini

max_execution_time = 30 //php脚本最大执行时间,超过此时间,php脚本将终止执行

error_reporting = E_ALL //为了测试把所有日志都展示出来

log_errors = On

error_log = /var/log/php7.3-fpm.log //php错误日志

2.3 php文件

在项目根目录/opt/wwwroot/test 下,创建 test.php 文件,通过调整来查看http响应code

<?php

sleep(7); // 通过调整sleep秒数,来达成不同情况的复现

echo "hello world".PHP_EOL;

error_log("hello", 3, "/tmp/hello.log");

2.4 状态码

状态码含义来自  https://httpstatuses.com/

3,实验

3.1 499

3.1.1 含义

499 CLIENT CLOSED REQUEST

A non-standard status code introduced by nginx for the case when a client closes the connection while nginx is processing the request.

客户端关闭请求:一个被nginx引入的非标准状态码,对应的场景是,当nginx正在处理请求时,客户端关闭了HTTP连接。

引申出来,就是当HTTP请求到达Nginx后,该请求还在被处理的状态时,浏览器的请求超时时间到了,主动关闭了连接。但是,此状态码在浏览器请求时几乎不可见,因为浏览器默认的超时时间会很长。多见于服务之间的调用,在业务架构中常常会分层设计,拆分为不同的子系统或者微服务,这样系统之间就会常常通过http方式来请求,并且会设置每次请求的超时时间,当请求在请求时间内所调用的上游服务无返回,则会主动关闭连接,上游服务日志中会记录一条499。

 

3.1.2 模拟

3.1.2.1 配置

3.1.2.1.1 nginx

fastcgi_connect_timeout 5;

fastcgi_send_timeout 10;

fastcgi_read_timeout 10;

3.1.2.1.2 php-fpm

pm.max_children = 5

request_terminate_timeout = 30

request_slowlog_timeout = 1

3.1.2.1.3 php.ini

max_execution_time = 30

3.1.2.1.4 php文件

<?php

sleep(7);

echo "hello world".PHP_EOL;

error_log("hello", 3, "/tmp/test.log");

3.1.2.2 操作

在终端命令行,使用curl方式进行请求,命令如下

curl -i -m 3 http://www.test.com/test.php

-m/--max-time <seconds> 用来设置最大传输时间,表示请求超时时间,单位为秒。这里表示这个curl请求最长连接时间为3秒。

 

3.1.2.3 反馈

3.1.2.3.1 终端命令行

curl: (28) Operation timed out after 3000 milliseconds with 0 bytes received

3.1.2.3.2 nginx access.log

127.0.0.1 - - [11/May/2020:14:00:34 +0800] "GET /test.php HTTP/1.1" 499 0 "-" "curl/7.47.0"

3.1.2.3.3 php7.3-fpm access.log

- -  11/May/2020:14:00:31 +0800 "GET /test.php" 200

3.1.2.3.4 php7.3-fpm log.slow

[11-May-2020 14:00:33]  [pool www] pid 97710

script_filename = /opt/wwwroot/test/test.php

[0x00007f8c94a1e080] sleep() /opt/wwwroot/test/test.php:3

3.1.2.3.5 php.ini error_log

[11-May-2020 14:00:33] WARNING: [pool www] child 97710, script "/opt/wwwroot/test/test.php" (request: "GET /test.php") executing too slow (1.083661 sec), logging

[11-May-2020 14:00:33] NOTICE: child 97710 stopped for tracing

[11-May-2020 14:00:33] NOTICE: about to trace 97710

[11-May-2020 14:00:33] NOTICE: finished trace of 97710

可以看到,在php层面,脚本执行了7秒多,既没有超出 30秒的max_execution_time ,又没有超出 30秒的 request_terminate_timeout,只超出了 1秒的 request_slowlog_timeout。在 nginx 层面,它也没有超出 10秒的fastcgi_read_timeout。但是7秒的执行时间,超过了curl请求自身的3秒超时时间,所以报 499错误。这个可以从nginx日志中可以看出。

 

3.2 500

3.2.1 含义

500 INTERNAL SERVER ERROR

The server encountered an unexpected condition that prevented it from fulfilling the request.

内部服务错误:服务器遭遇到了一个预料之外的情况,这个情况阻止了它完成请求的处理。

基本上是PHP脚本语言的语法错误。

3.2.2 模拟

3.1.2.1 配置

和默认配置一样,保持不变,对PHP脚本进行修改如下:

<?php

//sleep(7);

eco $a; //这里的$a未定义

echo "hello world".PHP_EOL //这里少了;

//error_log("hello", 3, "/tmp/test.log");

3.2.2.2 操作

curl -i http://www.test.com/test.php

3.2.3.3 反馈

3.1.2.3.1 终端命令行

HTTP/1.1 500 Internal Server Error

Server: nginx/1.17.4

Date: Mon, 11 May 2020 06:50:35 GMT

Content-Type: text/html; charset=UTF-8

Transfer-Encoding: chunked

Connection: keep-alive

3.1.2.3.2 nginx access.log

127.0.0.1 - - [11/May/2020:14:50:35 +0800] "GET /test.php HTTP/1.1" 500 5 "-" "curl/7.47.0"

3.1.2.3.2 nginx error.log

2020/05/11 14:46:12 [error] 94843#94843: *38 FastCGI sent in stderr: "PHP message: PHP Notice:  Undefined variable: a in /opt/wwwroot/test/test.php on line 5" while reading response header from upstream, client: 127.0.0.1, server: www.test.com, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.3-fpm.sock:", host: "www.test.com"

2020/05/11 14:50:35 [error] 94843#94843: *46 FastCGI sent in stderr: "PHP message: PHP Parse error: syntax error, unexpected end of file, expecting "," or ";" in /opt/wwwroot/test/test.php on line 7" while reading response header from upstream, client: 127.0.0.1, server: www.test.com, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.3-fpm.sock:", host: "www.test.com"

3.1.2.3.4 php7.3-fpm access.log

- -  11/May/2020:14:50:35 +0800 "GET /test.php" 500

可以看到,在PHP层面,由于语法错误,在php-fpm的访问日志中报500。在nginx层面,access报500,特别在error日志中,把fastcgi的标准错误也记录下来了,这很方便我们定位原因。在终端命令行,也报了500的错误。

同时,脚本执行所需的内存过大,导致系统无法分配内存,也会报500错误。例如

<?php

$a = [];

for($i=99999999;$i>=0;$i--) {

$a[] = $i*3;

}

var_dump($a);

反馈

HTTP/1.1 500 Internal Server Error

Server: nginx/1.17.4

Date: Mon, 11 May 2020 13:28:35 GMT

Content-Type: text/html; charset=UTF-8

Transfer-Encoding: chunked

Connection: keep-alive

nginx access.log

127.0.0.1 - - [11/May/2020:21:28:35 +0800] "GET /test.php HTTP/1.1" 500 5 "-" "curl/7.47.0"

nginx error.log

2020/05/11 21:28:35 [error] 94843#94843: *96 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Allowed memory size of 67108864 bytes exhausted (tried to allocate 67108872 bytes) in /opt/wwwroot/test/test.php on line 7" while reading response header from upstream, client: 127.0.0.1, server: www.test.com, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.3-fpm.sock:", host: "www.test.com"

php-fpm access.log

- -  11/May/2020:21:28:35 +0800 "GET /test.php" 500

php-fpm log.slow

无日志

php.ini error.log

无日志

可以看到,当php对test.php脚本进行解析时,尝试着去分配内存,但是超出了最大可用内存 64MB,

; Maximum amount of memory a script may consume (128MB)

; http://php.net/memory-limit

;memory_limit = 128M

memory_limit = 64M

而由于脚本还没来得及执行,所有就没有log.slow和error.log的记录了。

 

3.2.3 502

3.2.3.1 含义

502 BAD GATEWAY

The server, while acting as a gateway or proxy, received an invalid response from an inbound server it accessed while attempting to fulfill the request.

网关错误:服务器,当它作为一个网关或者代理去工作,尝试着处理请求时,它从它所进入的到达的 上游服务器 处,接收到了一个非法、无效的响应。

从上一篇文章,我们知道,网关,就是在协调服务器之间进行数据传输的设备,它包含着一套协议。在这个场景中,nginx负责客户端和php-fpm之间的数据传输,nginx就是这里的网关。

而对应502来说,它是指网关从上游服务器,也就是php-fpm那里收到了一个无效的响应,也就是说,问题不在nginx,而在php-fpm了。那php-fpm会出什么问题呢?

我们知道,php-fpm在启动后,会从master处fork出若干个worker进程,nginx会将请求转发给php-fpm,php-fpm处理php脚本,然后将结果原路返回。那这里就涉及到3个节点,第一php-fpm服务在不在,第二php-fpm的worker启动失败,第三php-fpm处理有没有问题。我们来分别模拟一下:

3.2.3.2 配置

3.2.3.2.1 php-fpm服务不可用

service php7.3-fpm stop

systemctl status php7.3-fpm.service

● php7.3-fpm.service - The PHP 7.3 FastCGI Process Manager

Loaded: loaded (/lib/systemd/system/php7.3-fpm.service; enabled; vendor preset: enabled)

Active: inactive (dead) since 一 2020-05-11 18:58:50 CST; 46s ago

Docs: man:php-fpm7.3(8)

Process: 94811 ExecReload=/bin/kill -USR2 $MAINPID (code=exited, status=0/SUCCESS)

Process: 97708 ExecStart=/usr/sbin/php-fpm7.3 --nodaemonize --fpm-config /etc/php/7.3/fpm/php-fpm.conf (code=exited, status=0/SUCCESS)

Main PID: 97708 (code=exited, status=0/SUCCESS)

Status: "Processes active: 0, idle: 2, Requests: 19, slow: 1, Traffic: 0req/sec"

执行

curl -i http://www.test.com/test.php

反馈

HTTP/1.1 502 Bad Gateway

Server: nginx/1.17.4

Date: Mon, 11 May 2020 10:59:04 GMT

Content-Type: text/html

Content-Length: 157

Connection: keep-alive

<html>

<head><title>502 Bad Gateway</title></head>

<body>

<center><h1>502 Bad Gateway</h1></center>

<hr><center>nginx/1.17.4</center>

</body>

</html>

nginx access.log

127.0.0.1 - - [11/May/2020:18:59:04 +0800] "GET /test.php HTTP/1.1" 502 157 "-" "curl/7.47.0"

nginx error.log

2020/05/11 18:59:04 [crit] 94842#94842: *58 connect() to unix:/run/php/php7.3-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: www.test.com, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.3-fpm.sock:", host: "www.test.com"

php.ini error.log

[11-May-2020 18:58:50] NOTICE: Terminating ...

[11-May-2020 18:58:50] NOTICE: exiting, bye-bye!

说明php-fpm服务未启动时,会造成502。

3.2.3.2.2 php-fpm worker启动失败

我们曾经遇到过,由于服务器内存不足,导致不能分配内存,fork()新的php-fpm worker进程失败,导致502 bad gatway,见 一次502的排查过程

3.2.3.2.3 php-fpm执行不正确

nginx

fastcgi_read_timeout 10;

php-fpm

request_terminate_timeout = 5

php.ini

max_execution_time = 30

test.php

<?php

sleep(7);

echo "hello world".PHP_EOL;

执行

curl -i http://www.test.com/test.php

返回

HTTP/1.1 502 Bad Gateway

Server: nginx/1.17.4

Date: Mon, 11 May 2020 12:13:11 GMT

Content-Type: text/html

Content-Length: 157

Connection: keep-alive

<html>

<head><title>502 Bad Gateway</title></head>

<body>

<center><h1>502 Bad Gateway</h1></center>

<hr><center>nginx/1.17.4</center>

</body>

</html>

nginx access.log

127.0.0.1 - - [11/May/2020:20:13:11 +0800] "GET /test.php HTTP/1.1" 502 157 "-" "curl/7.47.0"

nginx error.log

2020/05/11 20:13:11 [error] 94843#94843: *66 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 127.0.0.1, server: www.test.com, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.3-fpm.sock:", host: "www.test.com"

php-fpm access.log

无日志

php-fpm log.slow

[11-May-2020 20:13:07]  [pool www] pid 111473

script_filename = /opt/wwwroot/test/test.php

[0x00007fa800e1e080] sleep() /opt/wwwroot/test/test.php:3

php.ini error.log

[11-May-2020 20:13:07] WARNING: [pool www] child 111473, script "/opt/wwwroot/test/test.php" (request: "GET /test.php") executing too slow (1.145909 sec), logging

[11-May-2020 20:13:07] NOTICE: child 111473 stopped for tracing

[11-May-2020 20:13:07] NOTICE: about to trace 111473

[11-May-2020 20:13:07] NOTICE: finished trace of 111473

[11-May-2020 20:13:11] WARNING: [pool www] child 111473, script "/opt/wwwroot/test/test.php" (request: "GET /test.php") execution timed out (5.152688 sec), terminating

[11-May-2020 20:13:11] WARNING: [pool www] child 111473 exited on signal 15 (SIGTERM) after 69.485376 seconds from start

[11-May-2020 20:13:11] NOTICE: [pool www] child 111495 started

可以看到,由于sleep(7) 超出了 php-fpm的request_terminate_timeout = 5; 导致进程在5秒钟时终止运行,导致nginx接收数据失败 recv() failed,返回了504。

那如果把配置改成以下呢?

php-fpm

request_terminate_timeout = 2

php.ini

max_execution_time = 1

test.php

<?php

for($i=0;$i<=99999999;$i++) {

print($i);

}

执行结果

nginx access.log

127.0.0.1 - - [11/May/2020:21:15:53 +0800] "GET /test.php HTTP/1.1" 200 152406184 "-" "curl/7.47.0"

nginx error.log

2020/05/11 21:15:42 [error] 94840#94840: *88 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Maximum execution time of 1 second exceeded in /opt/wwwroot/test/test.php on line 7" while reading upstream, client: 127.0.0.1, server: www.test.com, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.3-fpm.sock:", host: "www.test.com"

php-fpm access.log

- -  11/May/2020:21:15:41 +0800 "GET /test.php" 200

php-fpm log.slow

[11-May-2020 21:15:42]  [pool www] pid 113133

script_filename = /opt/wwwroot/test/test.php

php.ini error.log

[11-May-2020 21:15:42] WARNING: [pool www] child 113133, script "/opt/wwwroot/test/test.php" (request: "GET /test.php") executing too slow (1.310565 sec), logging

[11-May-2020 21:15:42] NOTICE: child 113133 stopped for tracing

[11-May-2020 21:15:42] NOTICE: about to trace 113133

[11-May-2020 21:15:42] NOTICE: finished trace of 113133

可以看到,虽然PHP脚本本身执行时间需要很长,但是它在 1秒的max_exection_time之后, 仍然继续执行了。看起来这个max_exection_time设置在这里并没有约束这个脚本的执行。

 

3.2.4 504

3.2.4.1 含义

504 GATEWAY TIMEOUT

The server, while acting as a gateway or proxy, did not receive a timely response

from an upstream server it needed to access in order to complete the request.

网关超时:服务器,当作为一个网关或代理工作时,没有从上游服务器接收到 为了完成请求 所需访问的 及时的响应(数据)。也就是说,nginx作为网关,为了完成请求,它必须获取到上游服务器的数据,但是上游服务器在规定时间内没有给到这些数据,所以nginx无法access到这些数据。也就是上游服务器响应超时了。

3.2.4.2 试验

3.2.4.2.1

nginx

fastcgi_read_timeout 1;

php-fpm

request_terminate_timeout = 2/8

php.ini

max_execution_time = 10

php

<?php

sleep(7);

echo "hello world";

反馈

HTTP/1.1 504 Gateway Time-out

Server: nginx/1.17.4

Date: Mon, 11 May 2020 14:11:12 GMT

Content-Type: text/html

Content-Length: 167

Connection: keep-alive

<html>

<head><title>504 Gateway Time-out</title></head>

<body>

<center><h1>504 Gateway Time-out</h1></center>

<hr><center>nginx/1.17.4</center>

</body>

</html>

nginx access.log

127.0.0.1 - - [11/May/2020:22:11:12 +0800] "GET /test.php HTTP/1.1" 504 167 "-" "curl/7.47.0"

nginx error.log

2020/05/11 22:11:12 [error] 114740#114740: *1 upstream timed out (110: Connection timed out) 

while reading response header from upstream, client: 127.0.0.1, server: www.test.com,

request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.3-fpm.sock",

host: "www.test.com"

php-fpm access.log

- -  11/May/2020:22:11:11 +0800 "GET /test.php" 200

php-fpm slow.log

[11-May-2020 22:11:12]  [pool www] pid 114714

script_filename = /opt/wwwroot/test/test.php

[0x00007fb76f61e080] sleep() /opt/wwwroot/test/test.php:5

php.ini error.log

当为request_terminate_timeout2时

[11-May-2020 22:17:49] WARNING: [pool www] child 114873, script "/opt/wwwroot/test/test.php" (request: "GET /test.php") executing too slow (1.317875 sec), logging

[11-May-2020 22:17:49] NOTICE: child 114873 stopped for tracing

[11-May-2020 22:17:49] NOTICE: about to trace 114873

[11-May-2020 22:17:49] NOTICE: finished trace of 114873

[11-May-2020 22:17:50] WARNING: [pool www] child 114873, script "/opt/wwwroot/test/test.php" (request: "GET /test.php") execution timed out (2.320690 sec), terminating

[11-May-2020 22:17:50] WARNING: [pool www] child 114873 exited on signal 15 (SIGTERM) after 6.016013 seconds from start

[11-May-2020 22:17:50] NOTICE: [pool www] child 114881 started

当request_terminate_timeout为8时

[11-May-2020 22:11:12] WARNING: [pool www] child 114714, script "/opt/wwwroot/test/test.php" (request: "GET /test.php") executing too slow (1.132842 sec), logging

[11-May-2020 22:11:12] NOTICE: child 114714 stopped for tracing

[11-May-2020 22:11:12] NOTICE: about to trace 114714

[11-May-2020 22:11:12] NOTICE: finished trace of 114714

可以看到,nginx的超时时间为1秒,不管request_terminate_timeout为2还是8时,由于sleep(7),php都未执行完,返回给nginx的数据自然是不合格的,所以报504。只是当request_terminate_timeout为2时,php-fpm被强制终止了,而为8时,虽然nginx已经返回了504,但php脚本仍然在执行。

 

3.2.4.2.2 php-fpm执行时间超出 fastcgi_read_timeout 时间

php-fpm worker数量少,请求排队,占用了fastcgi_read_timeout时间,这样即便在php-fpm本身执行不需要很长时间的情况下,仍然会导致请求超出nginx fastcgi_read_timeout 时间。

nginx

fastcgi_read_timeout 10;

php.ini

max_execution_time = 30

php-fpm

pm.max_children = 1

pm.start_servers = 1

pm.min_spare_servers = 1

pm.max_spare_servers = 1

request_terminate_timeout = 30

test.php

<?php

sleep(7);

echo "hello world".PHP_EOL;

我们看到php-fpm只有一个worker, 那我们在两个不同的终端命令行中分别执行

curl -i http://www.test.com/test.php

第一个,执行7秒,200

HTTP/1.1 200 OK

Server: nginx/1.17.4

Date: Mon, 11 May 2020 11:28:14 GMT

Content-Type: text/html; charset=UTF-8

Transfer-Encoding: chunked

Connection: keep-alive

hello world

第二个,由于只有一个worker,在第一个请求执行完之前,第二个请求一直处在等待状态,而nginx所设置fastcgi_read_timeout 10;一直在等待返回,直到第一个请求执行完毕,worker被释放,此时耗费7秒钟。

接着第二个请求被执行,在 sleep(7) 执行到第3秒时,nginx所设置fastcgi_read_timeout 10秒钟已到,此时 php-fpm在此时间内没有标准返回,所以报 504 Gateway Timeout.

HTTP/1.1 504 Gateway Time-out

Server: nginx/1.17.4

Date: Mon, 11 May 2020 11:28:20 GMT

Content-Type: text/html

Content-Length: 167

Connection: keep-alive

<html>

<head><title>504 Gateway Time-out</title></head>

<body>

<center><h1>504 Gateway Time-out</h1></center>

<hr><center>nginx/1.17.4</center>

</body>

</html>

nginx access.log

127.0.0.1 - - [11/May/2020:19:28:20 +0800] "GET /test.php HTTP/1.1" 504 167 "-" "curl/7.47.0"

nginx error.log

2020/05/11 19:28:20 [error] 94840#94840: *64 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 127.0.0.1, server: www.test.com, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.3-fpm.sock", host: "www.test.com"

php-fpm access.log

- -  11/May/2020:19:28:14 +0800 "GET /test.php" 200

php-fpm log.slow

[11-May-2020 19:28:15] WARNING: [pool www] child 110567, script "/opt/wwwroot/test/test.php" (request: "GET /test.php") executing too slow (1.054866 sec), logging

[11-May-2020 19:28:15] NOTICE: child 110567 stopped for tracing

[11-May-2020 19:28:15] NOTICE: about to trace 110567

[11-May-2020 19:28:15] NOTICE: finished trace of 110567

php.ini error.log

​[11-May-2020 19:28:15]  [pool www] pid 110567

script_filename = /opt/wwwroot/test/test.php

[0x00007f6074a1e080] sleep() /opt/wwwroot/test/test.php:3

3.2.4 504 总结

由此可见,nginx的fastcgi_read_timeout时间,是包含了它排队获得php-fpm worker的时间,加上worker处理的时间。

3.3 总结

获取php-fpm worker + php运行时间 > fastcgi_read_timeout

504

request_terminate_timeout > fastcgi_read_timeout

502

php语法错误,脚本执行所需内存过大,无法分配内存

500

客户端超时时间 < 响应时间

499

fastcgi_read_timeout > request_terminate_timeout > 获取php-fpm worker + php运行时间

200

 

 

以上是 HTTP状态码499/500/502/504 的全部内容, 来源链接: utcz.com/z/516364.html

回到顶部