Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error 502 in nginx + php5-fpm

Tags:

php

nginx

fastcgi

I have some error with subj. Server doesn't high loaded: ~15% CPU, there are several Gb of memory, HDD is not buisy. But error 502 throws approximately in 3% of cases.

Programs: Debian 6, nginx/0.7.62, php5-fpm (5.3.3-1).

In error.log of nginx is this error:

connect() to unix:/var/run/php5-fpm.sock failed 

State of php5-fpm usually like this:

accepted conn:   41680 pool:             www process manager:  dynamic idle processes:   258 active processes: 1 total processes:  259 

I think, this mean loading is not high.

I have increased backlog params: in sysctl - net.core.somaxconn = 5000, in php-fpm pool - listen.backlog = 5000. No effect.

I quote a configuration:

/etc/nginx/nginx.conf

user www-data; worker_processes  8; timer_resolution 100ms; worker_rlimit_nofile 20240; worker_priority -5;  error_log  /var/log/nginx/error.log; pid        /var/run/nginx.pid;  events {     worker_connections  2048;     use epoll;     # multi_accept on; }  http {     include       /etc/nginx/mime.types;      access_log  /var/log/nginx/access.log;      sendfile        on;     tcp_nopush     on;      #keepalive_timeout  0;     keepalive_timeout  65;     tcp_nodelay        on;      gzip  on;     gzip_min_length 1100;     gzip_buffers 64 8k;     gzip_comp_level 3;     gzip_http_version 1.1;     gzip_proxied any;     gzip_types text/plain application/xml application/x-javascript text/css;     gzip_disable "MSIE [1-6]\.(?!.*SV1)";      include /etc/nginx/conf.d/*.conf;     include /etc/nginx/sites-enabled/*;      client_max_body_size 100M;     server_tokens off; } 

/etc/nginx/php_location

fastcgi_pass   unix:/var/run/php5-fpm.sock; fastcgi_index  index.php; fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name; fastcgi_buffers 256 128k; #fastcgi_buffer_size 16k; #fastcgi_busy_buffers_size 256k; fastcgi_connect_timeout 300s; fastcgi_send_timeout 300s; fastcgi_read_timeout 300s; include fastcgi_params; 

php-fpm pool

[www] listen = /var/run/php5-fpm.sock listen.backlog = 5000 listen.owner = www-data listen.group = www-data listen.mode = 0666 user = www-data group = www-data pm = dynamic pm.max_children = 1024 pm.start_servers = 64 pm.min_spare_servers = 64 pm.max_spare_servers = 128 pm.max_requests = 32000 pm.status_path = /system/php5-fpm-status slowlog = /var/www/log/php-fpm.log.slow chdir = /var/www 

What can I do to optimize this system and make this use all server resources?

PS. I'm sorry, my english is bad.

like image 939
andre487 Avatar asked May 06 '12 11:05

andre487


People also ask

What causes a 502 Bad gateway error?

The HTTP 502 - bad gateway error occurs when either: The timeout of the proxy was reached prior to the request completion. If the connection proxy > server drops. When the response from the server is invalid.

How does PHP-FPM work with NGINX?

Install PHP-FPM PHP-FPM, on the other hand, runs outside the NGINX environment by creating its own process. Therefore when a user requests a PHP page the nginx server will pass the request to PHP-FPM service using FastCGI. The installation of php-fpm in Ubuntu 18.04 depends on PHP and its version.


1 Answers

The issue is socket itself, its problems on high-load cases is well-known. Please consider using TCP\IP connection instead of unix socket, for that you need to make these changes:

  • in php-fpm pool configuration replace listen = /var/run/php5-fpm.sock with listen = 127.0.0.1:7777
  • in /etc/nginx/php_location replace fastcgi_pass unix:/var/run/php5-fpm.sock; with fastcgi_pass 127.0.0.1:7777;
like image 58
Dmitry Verhoturov Avatar answered Oct 02 '22 17:10

Dmitry Verhoturov