502 errors and request_time

Hi:

I’ve found 2 kinds of 502 errors in my server:

connection reset by peer, it happens as request_time reach to 10s.

connection timeout, it happens as request_time reach to 3s.

Server is:

centos , kernel(2.6.32)

php5.2 php-fpm

nginx 1.6.3.

access logs outputs:
[28/Nov/2015:14:41:08 +0800] “GET /ben2.php HTTP/1.1” 502 172 “-”
“Apache-HttpClient/4.2.6 (java 1.5)” “-” 3.000

[28/Nov/2015:14:41:11 +0800] “GET /ben2.php HTTP/1.1” 502 172 “-”
“Apache-HttpClient/4.2.6 (java 1.5)” “-” 10.000
error logs:
2015/11/28 14:41:11 [error] 12981#0: *798323 recv() failed (104:
Connection reset by peer) while reading response header from upstream,
client: xx.xx.xx.xx, server: xx.xx.xx, request: “GET /ben2.php
HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9000”, host: “xx.xx.xx”

2015/11/28 14:41:08 [error] 12981#0: *798215 connect() failed (110:
Connection timed out) while connecting to upstream, client: xx.xx.xx.xx,
server: xx.xx.xx, request: “GET /ben2.php HTTP/1.1”, upstream:
“fastcgi://127.0.0.1:9000”, host: “xx.xx.xx”

I’ve tried “request_terminate_timeout, fastcgi_connect_timeout,
fastcgi_read/write_timeout”, but no help.

What can I do next step ?

Hello!

On Sat, Nov 28, 2015 at 03:02:33PM +0800, Shi wrote:

centos , kernel(2.6.32)
2015/11/28 14:41:11 [error] 12981#0: *798323 recv() failed (104: Connection
reset by peer) while reading response header from upstream, client: xx.xx.xx.xx,
server: xx.xx.xx, request: “GET /ben2.php HTTP/1.1”, upstream:
“fastcgi://127.0.0.1:9000”, host: “xx.xx.xx”

2015/11/28 14:41:08 [error] 12981#0: *798215 connect() failed (110: Connection
timed out) while connecting to upstream, client: xx.xx.xx.xx, server: xx.xx.xx,
request: “GET /ben2.php HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9000”, host:
“xx.xx.xx”

I’ve tried “request_terminate_timeout, fastcgi_connect_timeout,
fastcgi_read/write_timeout”, but no help.

What can I do next step ?

The “connection reset by peer” means that the connection was
terminated by your backend, not by nginx. There isn’t much you
can do on nginx side. Consider checking php-fpm logs instead, may
be you are hitting some limit like execution time limit or
something.

The “connection timed out” means that nginx wasn’t able to connect
to the backend in time, fastcgi_connection_timeout is something
you can tune - though the default is 60s, and it should be big
enough for normal use. Again, consider looking into your backend
to find out why connection takes so long - likely it’s overloaded
and can’t process connection requests in time.


Maxim D.
http://nginx.org/