Nginx – 504 Gateway timeout / 502 Bad gateway after installing php curl – server nginx

502-error504curlnginxphp-fpm

I have (well had) a working server with nginx on board.
A server (dedicated) was only used to host a drupal site.

Recently we decided to host also a magento store on it and started preparation.
Since magento and nginx did not work together out of the box we had to upgrade nginx to most recent version.
Everything seemed to work ok.

Yesterday I have installed php5-curl (which is reguired by magento) and.. things gone bad. (although commenting out a line in curl.ini does not solve anything)

Every try to visit a php site (drupal or magento or custom script ended up in:

504 Gateway Time-out

So I have began to google, fount loads of topics, followed bunch of advices but nothing seems to work.

When I try to modify nginx setup (eg. adding :

 location ~ \.php$ {
            try_files $uri =404;
            include /etc/nginx/fastcgi_params;
            fastcgi_read_timeout 300;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_nam$
    }

A 504 error changes to

502 Bad Gateway

and nginx error log:
for 504 errors:

2014/11/20 13:17:56 [error] 20800#0: *27 upstream timed out (110: Connection tim
ed out) while reading response header from upstream, client: …, serve
r: www.(…), request: "GET (..) / HTTP/1.1", upstream: "fastcgi://127.0.0.1:
9000", host: "…"

for 502 errors:

19620#0: *84 recv() failed (104: Connection reset by
peer) while reading response header from upstream, client: (…), serve
r: (…), request: "GET (…) HTTP/1.1", upstream: "fa
stcgi://127.0.0.1:9000", host: "(…)"

additionally netstat shows this:

root@ns394907:/etc/nginx# netstat | grep 9000
tcp        0      0 localhost.localdom:9000 localhost.localdo:35872 SYN_RECV   
tcp        0      0 localhost.localdom:9000 localhost.localdo:35870 SYN_RECV   
tcp        0      0 localhost.localdom:9000 localhost.localdo:35871 SYN_RECV   
tcp        0      0 localhost.localdom:9000 localhost.localdo:35874 SYN_RECV   
tcp        0      0 localhost.localdom:9000 localhost.localdo:35873 SYN_RECV   
tcp      753      0 localhost.localdom:9000 localhost.localdo:35138 CLOSE_WAIT 
tcp      649      0 localhost.localdom:9000 localhost.localdo:35181 CLOSE_WAIT 
tcp      857      0 localhost.localdom:9000 localhost.localdo:35192 CLOSE_WAIT 
tcp      641      0 localhost.localdom:9000 localhost.localdo:35071 CLOSE_WAIT 
tcp     1305      0 localhost.localdom:9000 localhost.localdo:35149 CLOSE_WAIT 
tcp     1273      0 localhost.localdom:9000 localhost.localdo:35127 CLOSE_WAIT 
tcp     1121      0 localhost.localdom:9000 localhost.localdo:35130 CLOSE_WAIT 
tcp      769      0 localhost.localdom:9000 localhost.localdo:35171 CLOSE_WAIT 
tcp      737      0 localhost.localdom:9000 localhost.localdo:35175 CLOSE_WAIT 
tcp      761      0 localhost.localdom:9000 localhost.localdo:35205 CLOSE_WAIT 
tcp     1305      0 localhost.localdom:9000 localhost.localdo:35147 CLOSE_WAIT 
tcp      721      0 localhost.localdom:9000 localhost.localdo:35200 CLOSE_WAIT 
tcp      705      0 localhost.localdom:9000 localhost.localdo:35065 CLOSE_WAIT 
tcp        0    857 localhost.localdo:35868 localhost.localdom:9000 FIN_WAIT1  
tcp     1185      0 localhost.localdom:9000 localhost.localdo:35197 CLOSE_WAIT 
tcp      681      0 localhost.localdom:9000 localhost.localdo:35121 CLOSE_WAIT 
tcp      777      0 localhost.localdom:9000 localhost.localdo:35195 CLOSE_WAIT 
tcp      865      0 localhost.localdom:9000 localhost.localdo:35198 CLOSE_WAIT 
tcp     1185      0 localhost.localdom:9000 localhost.localdo:35152 CLOSE_WAIT 
tcp      753      0 localhost.localdom:9000 localhost.localdo:35136 CLOSE_WAIT 
tcp      729      0 localhost.localdom:9000 localhost.localdo:35206 CLOSE_WAIT 
tcp        0   1017 localhost.localdo:35870 localhost.localdom:9000 FIN_WAIT1  
tcp     1329      0 localhost.localdom:9000 localhost.localdo:35074 CLOSE_WAIT 
tcp     1273      0 localhost.localdom:9000 localhost.localdo:35125 CLOSE_WAIT 
tcp      761      0 localhost.localdom:9000 localhost.localdo:35122 CLOSE_WAIT 
tcp     1273      0 localhost.localdom:9000 localhost.localdo:35124 CLOSE_WAIT 
tcp      873      0 localhost.localdom:9000 localhost.localdo:35100 CLOSE_WAIT 
tcp      857      0 localhost.localdom:9000 localhost.localdo:35202 CLOSE_WAIT 
tcp      729      0 localhost.localdom:9000 localhost.localdo:35186 CLOSE_WAIT 
tcp      697      0 localhost.localdom:9000 localhost.localdo:35081 CLOSE_WAIT 
tcp     1097      0 localhost.localdom:9000 localhost.localdo:35139 CLOSE_WAIT 
tcp      753      0 localhost.localdom:9000 localhost.localdo:35115 CLOSE_WAIT 
tcp      761      0 localhost.localdom:9000 localhost.localdo:35094 CLOSE_WAIT 
tcp      649      0 localhost.localdom:9000 localhost.localdo:35064 CLOSE_WAIT 
tcp     1185      0 localhost.localdom:9000 localhost.localdo:35207 CLOSE_WAIT 
tcp      769      0 localhost.localdom:9000 localhost.localdo:35083 CLOSE_WAIT 
tcp      849      0 localhost.localdom:9000 localhost.localdo:35165 CLOSE_WAIT 
tcp      617      0 localhost.localdom:9000 localhost.localdo:35077 CLOSE_WAIT 
tcp        0    728 localhost.localdo:35871 localhost.localdom:9000 ESTABLISHED
tcp      857      0 localhost.localdom:9000 localhost.localdo:35204 CLOSE_WAIT 
tcp      689      0 localhost.localdom:9000 localhost.localdo:35089 CLOSE_WAIT 
tcp      761      0 localhost.localdom:9000 localhost.localdo:35093 CLOSE_WAIT 
tcp      769      0 localhost.localdom:9000 localhost.localdo:35090 CLOSE_WAIT 
tcp        0    688 localhost.localdo:35872 localhost.localdom:9000 ESTABLISHED
tcp      697      0 localhost.localdom:9000 localhost.localdo:35146 CLOSE_WAIT 
tcp      849      0 localhost.localdom:9000 localhost.localdo:35159 CLOSE_WAIT 
tcp      641      0 localhost.localdom:9000 localhost.localdo:35184 CLOSE_WAIT 
tcp      657      0 localhost.localdom:9000 localhost.localdo:35158 CLOSE_WAIT 
tcp     1097      0 localhost.localdom:9000 localhost.localdo:35141 CLOSE_WAIT 
tcp      801      0 localhost.localdom:9000 localhost.localdo:35073 CLOSE_WAIT 
tcp     1217      0 localhost.localdom:9000 localhost.localdo:35153 CLOSE_WAIT 
tcp      705      0 localhost.localdom:9000 localhost.localdo:35068 CLOSE_WAIT 
tcp     1209      0 localhost.localdom:9000 localhost.localdo:35129 CLOSE_WAIT 
tcp      737      0 localhost.localdom:9000 localhost.localdo:35203 CLOSE_WAIT 
tcp      753      0 localhost.localdom:9000 localhost.localdo:35166 CLOSE_WAIT 
tcp      633      0 localhost.localdom:9000 localhost.localdo:35164 CLOSE_WAIT 
tcp      689      0 localhost.localdom:9000 localhost.localdo:35107 CLOSE_WAIT 
tcp      705      0 localhost.localdom:9000 localhost.localdo:35110 CLOSE_WAIT 
tcp     1337      0 localhost.localdom:9000 localhost.localdo:35131 CLOSE_WAIT 
tcp      689      0 localhost.localdom:9000 localhost.localdo:35085 CLOSE_WAIT 
tcp      641      0 localhost.localdom:9000 localhost.localdo:35187 CLOSE_WAIT 
tcp     1105      0 localhost.localdom:9000 localhost.localdo:35098 CLOSE_WAIT 
tcp      881      0 localhost.localdom:9000 localhost.localdo:35097 CLOSE_WAIT 
tcp     1273      0 localhost.localdom:9000 localhost.localdo:35126 CLOSE_WAIT 
tcp      865      0 localhost.localdom:9000 localhost.localdo:35079 CLOSE_WAIT 
tcp      769      0 localhost.localdom:9000 localhost.localdo:35109 CLOSE_WAIT 
tcp     1257      0 localhost.localdom:9000 localhost.localdo:35155 CLOSE_WAIT 
tcp      809      0 localhost.localdom:9000 localhost.localdo:35189 CLOSE_WAIT 
tcp      745      0 localhost.localdom:9000 localhost.localdo:35087 CLOSE_WAIT 
tcp        0    817 localhost.localdo:35869 localhost.localdom:9000 FIN_WAIT1  
tcp      825      0 localhost.localdom:9000 localhost.localdo:35143 CLOSE_WAIT 
tcp      737      0 localhost.localdom:9000 localhost.localdo:35067 CLOSE_WAIT 
tcp     1073      0 localhost.localdom:9000 localhost.localdo:35157 CLOSE_WAIT 
tcp     1137      0 localhost.localdom:9000 localhost.localdo:35137 CLOSE_WAIT 
tcp      745      0 localhost.localdom:9000 localhost.localdo:35178 CLOSE_WAIT 
tcp     1321      0 localhost.localdom:9000 localhost.localdo:35156 CLOSE_WAIT 
tcp     1305      0 localhost.localdom:9000 localhost.localdo:35148 CLOSE_WAIT 
tcp      753      0 localhost.localdom:9000 localhost.localdo:35092 CLOSE_WAIT 
tcp     1209      0 localhost.localdom:9000 localhost.localdo:35150 CLOSE_WAIT 
tcp      729      0 localhost.localdom:9000 localhost.localdo:35193 CLOSE_WAIT 
tcp        9      0 localhost.localdom:9000 localhost.localdo:39387 CLOSE_WAIT 
tcp      873      0 localhost.localdom:9000 localhost.localdo:35084 CLOSE_WAIT 
tcp      689      0 localhost.localdom:9000 localhost.localdo:35106 CLOSE_WAIT 
tcp      729      0 localhost.localdom:9000 localhost.localdo:35168 CLOSE_WAIT 
tcp      873      0 localhost.localdom:9000 localhost.localdo:35188 CLOSE_WAIT 
tcp      777      0 localhost.localdom:9000 localhost.localdo:35075 CLOSE_WAIT 
tcp      857      0 localhost.localdom:9000 localhost.localdo:35160 CLOSE_WAIT 
tcp      737      0 localhost.localdom:9000 localhost.localdo:35080 CLOSE_WAIT 
tcp      889      0 localhost.localdom:9000 localhost.localdo:35082 CLOSE_WAIT 
tcp      705      0 localhost.localdom:9000 localhost.localdo:35111 CLOSE_WAIT 
tcp     1241      0 localhost.localdom:9000 localhost.localdo:35191 CLOSE_WAIT 
tcp      857      0 localhost.localdom:9000 localhost.localdo:35167 CLOSE_WAIT 
tcp      785      0 localhost.localdom:9000 localhost.localdo:35091 CLOSE_WAIT 
tcp     1121      0 localhost.localdom:9000 localhost.localdo:35132 CLOSE_WAIT 
tcp      761      0 localhost.localdom:9000 localhost.localdo:35145 CLOSE_WAIT 
tcp     1057      0 localhost.localdom:9000 localhost.localdo:35116 CLOSE_WAIT 
tcp      825      0 localhost.localdom:9000 localhost.localdo:35112 CLOSE_WAIT 
tcp     1241      0 localhost.localdom:9000 localhost.localdo:35172 CLOSE_WAIT 
tcp      993      0 localhost.localdom:9000 localhost.localdo:35194 CLOSE_WAIT 
tcp      729      0 localhost.localdom:9000 localhost.localdo:35163 CLOSE_WAIT 
tcp     1273      0 localhost.localdom:9000 localhost.localdo:35123 CLOSE_WAIT 
tcp      753      0 localhost.localdom:9000 localhost.localdo:35173 CLOSE_WAIT 
tcp      641      0 localhost.localdom:9000 localhost.localdo:35072 CLOSE_WAIT 
tcp     1273      0 localhost.localdom:9000 localhost.localdo:35128 CLOSE_WAIT 
tcp      785      0 localhost.localdom:9000 localhost.localdo:35102 CLOSE_WAIT 
tcp      737      0 localhost.localdom:9000 localhost.localdo:35069 CLOSE_WAIT 
tcp      681      0 localhost.localdom:9000 localhost.localdo:35108 CLOSE_WAIT 
tcp      665      0 localhost.localdom:9000 localhost.localdo:35078 CLOSE_WAIT 
tcp      913      0 localhost.localdom:9000 localhost.localdo:35140 CLOSE_WAIT 
tcp      873      0 localhost.localdom:9000 localhost.localdo:35095 CLOSE_WAIT 
tcp    10233      0 localhost.localdom:9000 localhost.localdo:35151 CLOSE_WAIT 
tcp      697      0 localhost.localdom:9000 localhost.localdo:35113 CLOSE_WAIT 
tcp     1137      0 localhost.localdom:9000 localhost.localdo:35154 CLOSE_WAIT 
tcp      849      0 localhost.localdom:9000 localhost.localdo:35070 CLOSE_WAIT 
tcp      849      0 localhost.localdom:9000 localhost.localdo:35104 CLOSE_WAIT 
tcp      673      0 localhost.localdom:9000 localhost.localdo:35169 CLOSE_WAIT 
tcp      737      0 localhost.localdom:9000 localhost.localdo:35185 CLOSE_WAIT 
tcp      881      0 localhost.localdom:9000 localhost.localdo:35161 CLOSE_WAIT 
tcp      857      0 localhost.localdom:9000 localhost.localdo:35183 CLOSE_WAIT 
tcp      905      0 localhost.localdom:9000 localhost.localdo:35176 CLOSE_WAIT 
tcp      601      0 localhost.localdom:9000 localhost.localdo:35120 CLOSE_WAIT 
tcp      881      0 localhost.localdom:9000 localhost.localdo:35096 CLOSE_WAIT 
tcp      737      0 localhost.localdom:9000 localhost.localdo:35199 CLOSE_WAIT 
tcp      889      0 localhost.localdom:9000 localhost.localdo:35086 CLOSE_WAIT 
tcp      737      0 localhost.localdom:9000 localhost.localdo:35174 CLOSE_WAIT 
tcp     1305      0 localhost.localdom:9000 localhost.localdo:35133 CLOSE_WAIT 
tcp     1305      0 localhost.localdom:9000 localhost.localdo:35144 CLOSE_WAIT 
tcp      873      0 localhost.localdom:9000 localhost.localdo:35099 CLOSE_WAIT 
tcp      897      0 localhost.localdom:9000 localhost.localdo:35170 CLOSE_WAIT 
tcp      873      0 localhost.localdom:9000 localhost.localdo:35103 CLOSE_WAIT 
tcp        0   1008 localhost.localdo:35874 localhost.localdom:9000 ESTABLISHED
tcp      913      0 localhost.localdom:9000 localhost.localdo:35135 CLOSE_WAIT 
tcp     1273      0 localhost.localdom:9000 localhost.localdo:35182 CLOSE_WAIT 
tcp        0    872 localhost.localdo:35873 localhost.localdom:9000 ESTABLISHED
tcp      905      0 localhost.localdom:9000 localhost.localdo:35117 CLOSE_WAIT 
tcp      633      0 localhost.localdom:9000 localhost.localdo:35180 CLOSE_WAIT 
tcp     1105      0 localhost.localdom:9000 localhost.localdo:35134 CLOSE_WAI

hope anyone can help, since the drupal site/store that is affected is crutial for my company.

Thanks!

edit:

/etc/nginx# nginx -V
nginx version: nginx/1.6.2
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_spdy_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module --add-module=/build/buildd/nginx-1.6.2/debian/modules/nginx-auth-pam --add-module=/build/buildd/nginx-1.6.2/debian/modules/nginx-dav-ext-module --add-module=/build/buildd/nginx-1.6.2/debian/modules/nginx-echo --add-module=/build/buildd/nginx-1.6.2/debian/modules/nginx-upstream-fair --add-module=/build/buildd/nginx-1.6.2/debian/modules/ngx_http_substitutions_filter_module

EDIT: this solution is working for now: https://stackoverflow.com/a/14560181/1214002

Best Answer

You can try with these; but I'm not sure if those will help with bunch of CLOSE_WAIT's I've used following to help me with bunch of connections in TIME_WAIT state

sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_tw_recycle=1

Check if there is any benefit when you switch fastcgi_pass to use unix socket instead e.g.

fastcgi_pass unix:/tmp/php.sock

For this you will need to update php config to listen on unix socket rather than IP socket

Another similar issue to yours here : Nginx + php-fpm "504 Gateway Time-out" error with almost zero load (on a test-server) suggests to limit php execution time by adjusting

request_terminate_timeout=30s

in php fast cgi / php-fpm configuration.