Intermittent 500 errors with Nginx reverse proxy for Apache PHP FPM

I have Nginx as reverse proxy in front of Apache. Nginx is handling most
of
the redirects and static content. Apache is handling PHP requests using
fastcgi php-fpm. This setup is giving intermittent 500 errors, however,
there are no errors when Apache is serving traffic directly.

Below are some key parameters:

  • Apache is using worker MPMs.
    ServerLimit 2048
    ThreadLimit 100
    StartServers 10
    MinSpareThreads 30
    MaxSpareThreads 100
    ThreadsPerChild 64
    MaxClients 2048
    MaxRequestsPerChild 5000

Nginx is using 2 worker processes and worker_connections is 1024. Proxy
connections are configured using proxy_pass and not upstream.

Keep-alive is disabled on both Apache and Nginx.

Apache access logs show 500 return code, but apache error logs don’t
contain any information. php-fpm logs are empty as well.

Nginx debug logs indicates:

2015/02/10 21:21:39 [debug] 10657#0: connect to 127.0.0.1:8080, fd:60
#50
2015/02/10 21:21:39 [debug] 10657#0: *49 http upstream connect: -2
2015/02/10 21:21:39 [debug] 10657#0: *49 posix_memalign:
000000000129B290:128 @16
2015/02/10 21:21:39 [debug] 10657#0: *49 event timer add: 60:
60000:1423632159180
2015/02/10 21:21:39 [debug] 10657#0: *49 http finalize request: -4,
“/reviews/truelist?” a:1, c:2
2015/02/10 21:21:39 [debug] 10657#0: *49 http request count:2 blk:0
2015/02/10 21:21:39 [debug] 10657#0: *49 post event 00000000012516A8
2015/02/10 21:21:39 [debug] 10657#0: *49 post event 0000000001251710
2015/02/10 21:21:39 [debug] 10657#0: *49 delete posted event
0000000001251710
2015/02/10 21:21:39 [debug] 10657#0: *49 http upstream request:
“/reviews/truelist?”
2015/02/10 21:21:39 [debug] 10657#0: *49 http upstream send request
handler
2015/02/10 21:21:39 [debug] 10657#0: *49 http upstream send request
2015/02/10 21:21:39 [debug] 10657#0: *49 chain writer buf fl:1 s:369
2015/02/10 21:21:39 [debug] 10657#0: *49 chain writer in:
000000000129C1D8
2015/02/10 21:21:39 [debug] 10657#0: *49 writev: 369
2015/02/10 21:21:39 [debug] 10657#0: *49 chain writer out:
0000000000000000
2015/02/10 21:21:39 [debug] 10657#0: *49 event timer del: 60:
1423632159180
2015/02/10 21:21:39 [debug] 10657#0: *49 event timer add: 60:
60000:1423632159181
2015/02/10 21:21:39 [debug] 10657#0: *49 delete posted event
00000000012516A8
2015/02/10 21:21:39 [debug] 10657#0: *49 http run request:
“/reviews/truelist?”
2015/02/10 21:21:39 [debug] 10657#0: *49 http upstream check client,
write
event:1, “/reviews/truelist”
2015/02/10 21:21:39 [debug] 10657#0: *49 http upstream recv(): -1 (11:
Resource temporarily unavailable)
2015/02/10 21:21:39 [debug] 10657#0: post event 00000000012362B0

Another thing I noticed is that http.workers have dropped from 30-40
workers to 2 workers with nginx. When Apache is serving traffic without
Nginx, there are no 500 errors, but it has more workers active.

Any pointers on debugging 500 errors will be really helpful.

If the apache access logs are showing a 500, then it’s pointing to a PHP
problem isn’t it??? What’s in the php-fpm logs?

BTW if you’re running php as fpm, why are you using apache at all? I
certainly don’t.

Cheers,

Steve

On Wed, 2015-02-11 at 16:07 -0800, neubyr wrote:

ServerLimit 2048
Proxy connections are configured using proxy_pass and not upstream.

000000000129B290:128 @16
“/reviews/truelist?”
1423632159180
2015/02/10 21:21:39 [debug] 10657#0: post event 00000000012362B0


Thanks,
N


nginx mailing list
[email protected]
nginx Info Page


Steve H. BSc(Hons) MIITP

Linkedin: http://www.linkedin.com/in/steveholdoway
Skype: sholdowa

As errors are seen only when Nginx is front of Apache, I thought there
is
some configuration parameter tuning needed when Nginx is in picture.

My plan is to migrate to Nginx completely, but I can’t do it right now

N

On Wed, Feb 11, 2015 at 6:10 PM, Steve H. [email protected]