@MrFakir

Переодически вылетает ошибка 502 — nginx, куда копать?

Доброго дня. В понедельник вдруг началась такая проблема.
При осуществление действий от имени авторизованного пользователя (выставление статей на сайт) появляется ошибка 502. Не всегда, через раз. После каких именно действий она появляется, так и не смог выяснить. После чего такое произошло тоже. Ниже конфиги
nginx.cfg
user nginx nobody;                  
worker_processes	16;               

error_log /var/log/nginx/error_log notice;

events {
##  worker_connections	2048;
  worker_connections	204800;
  use epoll;               
}

#worker_rlimit_nofile	32768;
worker_rlimit_nofile	327680;

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

upstream fpm-sock {
 server unix:/var/run/php5-fpm.sock;
 }

    log_format main
    '$remote_addr - $remote_user [$time_local] '
    '"$request" $status $bytes_sent '           
    '"$http_referer" "$http_user_agent" '       
    '"$gzip_ratio"';                            


#geoip_country	/usr/share/GeoIP/GeoIP.dat;
#geoip_city	/usr/share/GeoIP/GeoIPCity.dat;
#geoip_org	/usr/share/GeoIP/GeoIPISP.dat;

## Size Limits

keepalive_timeout 6000;

output_buffers 32 512k;
sendfile_max_chunk 128k;
postpone_output 1460;
server_names_hash_bucket_size 64;


client_max_body_size 100m;

## General Options
    ignore_invalid_headers	on;
    sendfile	on;
upload_progress uploads 1m;

## TCP options 
    tcp_nodelay	on;
    tcp_nopush	on;
    reset_timedout_connection on;

## Compression
    gzip		on;
    gzip_buffers	16 8k;
    gzip_comp_level	5;
    gzip_http_version	1.0;
    gzip_min_length	1000;
    gzip_types		text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
    gzip_vary		on;
    gzip_static		on;
    gzip_proxied	any;
    gzip_disable	msie6;

    index index.php index.html;

    include hosts/mysite.ru.conf;
...(здесь ещё 12 сайтов)
    include hosts/mysite-n.ru.conf;

}# end of http


Было keepalive_timeout 600; Сделал 1000, ошибка при публикации материалов стала появлятся крайне редко, но теперь вылезет при просмотре сайта у всех пользователей, опять же иногда, бывает при клике на фото, бывает при просмотре материала.

mysite.ru.conf (конфиг сайта)
server {
	listen ***.**.**.**;
	server_name mysite.ru;
	#limit_conn one 60;
	access_log /var/log/nginx/mysite.access_log main;
	error_log /var/log/nginx/mysite.error_log info;  

	root /var/www/mysite.ru/htdocs;


	## www. redirect
	if ($host ~* ^(www\.)(.+)) {
	  set $rawdomain $2;
	  rewrite ^/(.*)$  http://$rawdomain/$1 permanent;
	}

	## rewrite rules for old site
	rewrite ^/art([0-9]*)\.html? /node/$1 permanent;
	rewrite ^/topic([0-9]*)\.html? /taxonomy/term/$1 permanent;
	rewrite ^/topic([0-9]*)-([0-9]*)\.html? /taxonomy/term/$1?page=$2 permanent;

	rewrite ^/reviews\.php /taxonomy/term/19 permanent;

	rewrite ^/theme([0-9]*)\.html? /old/theme.php?id=$1;
	rewrite ^/delivery_full_([0-9]*)\.html? /old/delivery.php?d=$1;
	rewrite ^/review([0-9]*)\.html? /old/review.php?id=$1;
	rewrite ^/show_review\.php /old/review.php;
	rewrite ^/archive\.php /archive/today permanent;

	rewrite ^/yandex.news/yandex.phtm /yandex.xml;

	rewrite ^/img/([^\.]*\.(jpg|gif)) /sites/default/files/img/$1 permanent;

	rewrite ^/info/(.*)\.htm /info/index.php?id=$1;
	rewrite ^/info/?$ /info/index.php;
	rewrite ^/info/sitemap.xml /info/sitemap.php;
	rewrite ^/egadget([1-9])\.xml /egadget/$1/feed permanent;

	if ($request_uri ~* "^/show_article\.php\?id=([0-9]*)") {
	  set $q $1;
	  set $args "";
	  rewrite ^\/.*$ /node/$q permanent;
	}

#        location ~* ^/(bank|nojob|pkuda|politi[ck]a|shkola)/? {
        location ~* ^/(nojob|pkuda|shkola)/? {
	proxy_pass   [url]http://old.mysite.ru;[/url]
	    proxy_redirect default;
	    proxy_set_header Host $host;
	    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location ~* ^/(medi[ck])/? {
            proxy_pass   [url]http://med.mysite.ru;[/url]
            proxy_redirect default;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }


	## 6.x starts
	location / {
	  #rewrite ^/(.*)/$ /$1 permanent; # remove trailing slashes - disabled
	  try_files $uri @cache;
	}

	location @cache {
	  if ( $request_method !~ ^(GET|HEAD)$ ) {
	    return 405;
	  }

	  if ($http_cookie ~ "DRUPAL_UID") {
	    return 405;
	  }

	  error_page 405 = @drupal;

	  add_header Expires epoch;
	  add_header Cache-Control "must-revalidate, post-check=0, pre-check=0";
	  try_files /cache/normal/$host${uri}_$args.html @drupal;
	}

	location @drupal {
	  ###
	  ### now simplified to reduce rewrites
	  ###
	  rewrite ^/(.*)$  /index.php?q=$1 last;
	}

	location ~* (/\..*|settings\.php$|\.(htaccess|engine|inc|info|ini|install|module|profile|pl|po|pot|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(Entries.*|Repository|Root|Tag|Template))$ {
	  deny all;
	}

	location ~* /files/.*\.php$ {
	  return 444;
	}
	location ~* /themes/.*\.php$ {
	  return 444;
	}

	location ~* \.php$ {
	  try_files $uri @drupal;       #check for existence of php file
	  fastcgi_pass		fpm-sock;
	  fastcgi_index		index.php;
	  fastcgi_param		SCRIPT_FILENAME /var/www/mysite.ru/htdocs$fastcgi_script_name;
	  include		fastcgi_params;
	}

	location ~ \.css$ {
	  if ( $request_method !~ ^(GET|HEAD)$ ) {
	    return 405;
	  }
	  if ($http_cookie ~ "DRUPAL_UID") {
	    return 405;
	  }

	  error_page 405 = @uncached;
	  access_log  off;
	  expires  max; #if using aggregator
	  try_files /cache/perm/$host${uri}_.css $uri =404;
	}
   
	location ~ \.js$ {
	  if ( $request_method !~ ^(GET|HEAD)$ ) {
	    return 405;
	  }
	  if ($http_cookie ~ "DRUPAL_UID") {
	    return 405;
	  }

	  error_page 405 = @uncached;
	  access_log  off;
	  expires  max; #if using aggregator
	  try_files /cache/perm/$host${uri}_.js $uri =404;
	}

	location ~ \.json$ {
	  if ( $request_method !~ ^(GET|HEAD)$ ) {
	    return 405;
	  }
	  if ($http_cookie ~ "DRUPAL_UID") {
	    return 405;
	  }

	  error_page 405 = @uncached;
	  access_log  off;
	  expires  max; #if using aggregator
	  try_files /cache/normal/$host${uri}_.json $uri =404;
	}

	location @uncached {
	  access_log  off;
	  expires  max; # max if using aggregator, otherwise sane expire time
	}

	location ~* /files/imagecache/ {
	  access_log         off;
	  try_files $uri @drupal;  #imagecache support - now it works
	}

	location ~* ^.+\.(jpg|jpeg|gif|png|ico)$ {
	  access_log      off;
	  expires         30d;
	  try_files $uri =404;
	}

	location ~* \.xml$ {
	  if ( $request_method !~ ^(GET|HEAD)$ ) {
	    return 405;
	  }
	  if ($http_cookie ~ "DRUPAL_UID") {
	    return 405;
	  }

	  error_page 405 = @drupal;
	  add_header Expires epoch;
	  add_header Cache-Control "must-revalidate, post-check=0, pre-check=0";
	  types { }
	  default_type application/rss+xml;
	  try_files /cache/normal/$host${uri}_.xml /cache/normal/$host${uri}_.html $uri @drupal;
	}

	location ~* /feed$ {
	  if ( $request_method !~ ^(GET|HEAD)$ ) {
	    return 405;
	  }
	  if ($http_cookie ~ "DRUPAL_UID") {
	    return 405;
	  }

	  error_page 405 = @drupal;
	  add_header Expires epoch;
	  add_header Cache-Control "must-revalidate, post-check=0, pre-check=0";
	  types { }
	  default_type application/rss+xml;
	  try_files /cache/normal/$host${uri}_.xml /cache/normal/$host${uri}_.html $uri @drupal;
	}



	location /rest/ {

		allow 127.0.0.1;
		allow ***.***.**.0/24;
		allow ***.**.***.**;
		deny  all;

		rewrite ^/(.*)$  /index.php?q=$1 break;

		include cors-nginx.conf;
		fastcgi_pass		fpm-sock;
		fastcgi_index		index.php;
		fastcgi_param		SCRIPT_FILENAME /var/www/mysite.ru/htdocs$fastcgi_script_name;
		include		fastcgi_params;

	}

    } # end of server


Последние логи php-fmp.log
[27-Apr-2016 10:53:02.134969] NOTICE: pid 9079, fpm_event_loop(), line 367: ready to handle connections
[27-Apr-2016 10:53:03.135992] DEBUG: pid 9079, fpm_pctl_perform_idle_server_maintenance(), line 379: [pool www] currently 3 active children, 29 spare children, 32 running children. Spawning rate 1


Логи в mysite.error_log выбрал разные
[B]2016/04/26 12:01:21 [info] 17564#0: *60409567 recv() failed (104: Connection reset by peer) while sending to client, client: 52.90.204.194, server: mysite.ru, request: "GET ссылка HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock", host: "mysite.ru"[/B]
насколько я понимаю это и есть та ошибка, которая мне покоя не даёт
...
2016/04/26 12:01:25 [info] 17570#0: *60408601 client 195.93.246.156 closed keepalive connection (104: Connection reset by peer)
...
2016/04/26 12:01:27 [info] 17565#0: *60409629 client 164.132.161.86 closed keepalive connection
2016/04/26 12:01:27 [info] 17564#0: *60409573 client 31.13.144.8 closed keepalive connection (104: Connection reset by peer)
2016/04/26 12:01:27 [warn] 17565#0: *60409651 an upstream response is buffered to a temporary file /var/lib/nginx/tmp/fastcgi/3/57/0000981573 while reading upstream, client: 88.198.38.111, server: mysite.ru, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "mysite.ru"
2016/04/26 12:01:28 [info] 17565#0: *60409649 client 157.55.39.40 closed keepalive connection
...


Гуглил вчера весь день, в английском не силён, но переводил. Нашёл решение

stackoverflow.com/questions/23443398/nginx-error-c... использовал

Больше ничего не смог применить.

Какие логи и конфигу нужно, скину.
Куда копать? уже сума сойду скоро.
  • Вопрос задан
  • 1618 просмотров
Пригласить эксперта
Ответы на вопрос 2
bingo347
@bingo347
Crazy on performance...
502 ошибку nginx кидает когда недоступен бэкенд
в частности у Вас первым делом бы проверил права доступа на /var/run/php5-fpm.sock - для юзера nginx'a
Ответ написан
Endru9
@Endru9
Админ Linux
Ограничения нужно искать в конфиге пула www.conf для php-fpm.
какое там значение pm.max_children? возможно его потребуется увеличить...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы