LINUX.ORG.RU
решено ФорумAdmin

502 ошибка на половине страниц (nginx + php7.0-fpm)

 , , ,


0

1

Наблюдается 502 ошибка на половине страниц сайта на WP. Соединение сразу сбрасывается при переходе на эти страницы с ошибкой:

... recv() failed (104: Connection reset by peer) while reading response header from upstream, client: ... upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock:"

С php5.6 ошибок нет.

Конфиг nginx:

user www-data;
worker_processes 4;
pid /run/nginx.pid;
timer_resolution 100ms;
worker_rlimit_nofile 8192;
worker_priority -5;

events {
	worker_connections 1024;
}

http {
	client_max_body_size 100m;

	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;

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

	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	gzip on;
	gzip_disable "msie6";

	gzip_vary on;
	gzip_proxied any;
	gzip_comp_level 6;
	gzip_buffers 16 8k;
	gzip_http_version 1.1;
	gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}

Конфиг хоста:

server {
.....
.....
.....
	location / {
		index index.php;
		try_files       $uri $uri/ @wordpress;
	}

	location ~ \.php$ {
		fastcgi_pass unix:/run/php/php7.0-fpm.sock;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
		include        fastcgi_params;
	}

	location @wordpress
	{
		rewrite "^/(.*)$" "/index.php?q=$1" last;
	}
.....
.....
.....
}

В конфиге php практически все по дефолту, кроме cgi.fix_pathinfo=0 и увеличения некоторых лимитов.

Проблема в WP/плагинах или чего-то не хватает для php7 в конфигах?

ОС - Debain8.4 amd64
php-fpm - 7.0.6-1~dotdeb+8.1
nginx - 1.8.1

★★★

Пхп захлебывается и дохнет походу, попробуй сделать его через tcp сокет, а не через unix. Хотя и вероятности что это сработает мало.

anonymous
()

И опять пыхопроблемы и нет логов ошибок этой пыхи.
Нет, я отказываюсь таких консультировать.

Goury ★★★★★
()
Ответ на: комментарий от goingUp

Если бы пыха падала — нжинкс выдавал бы 500, 503 или 504.
502 значит что ответ от пыхи был получен, но не тот, на который рассчитывал нжинкс.

Goury ★★★★★
()
Последнее исправление: Goury (всего исправлений: 1)

С php5.6 ошибок нет.

ну так и используйте его...

Belen ★★
()
Ответ на: комментарий от Goury

В логе

Connection reset by peer

Nginx установил соединение с fastcgi через соккет, но потом его внезапно закрыли с той стороны. Это может быть из-за креша процесса.

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

Я нахожу этот вариант сомнительным, но вероятным.
В любом случае лог пыхи необходим для диагностики.

Goury ★★★★★
()
Ответ на: комментарий от Goury

В пыхе ничего кроме вот таких строчек:

[05-May-2016 17:59:10] WARNING: [pool www] child 6789 exited on signal 6 (SIGABRT) after 511.538964 seconds from start
[05-May-2016 17:59:10] NOTICE: [pool www] child 6835 started

zevilz ★★★
() автор топика
Ответ на: комментарий от anonymous

Не было. Добавил - изменений никаких.

zevilz ★★★
() автор топика

Попробуй поднять несколько инстансов PHP
И в upstream укажи все три, если будут проблемы - укажи таймауты
Эдакий Round-robin получится

mystery ★★
()
Ответ на: комментарий от zevilz

В php-fpm надо отдельно включать логирование ошибок. В лог nginx-а отправляется не всё. Кажется php_admin_value[error_log]
Скорее всего в теме или одном из плагинов есть что-то что не работает в седьмом пыхе или образение к чему-то из модуля который не установлен.

MrClon ★★★★★
()

P.S. что-то я не понял. Падают одни и те-же страницы, или просто фэйлится каждый второй запрос?

MrClon ★★★★★
()
Ответ на: комментарий от zevilz

Ну тогда если включать лог ошибок пыхи Кришна не велит, то можно посмотреть что особенного в проблемных страницах и отталкиваясь от этого попытаться понять в чём собственно проблема.
С логом конечно проще, но так — гораздо увлекательнее (:

MrClon ★★★★★
()
Ответ на: комментарий от MrClon

Нашел проблеммное место. На нерабочих страницах есть вывод кнопок шаринга и рядом общее количество лайков. По каждой соцсети через API соцсетей достается количество лайков, суммируется и выдается. Функции каждой соцсети аналогичные, но падает при только при обращении к твиттеру:

$response = wp_remote_retrieve_body( wp_remote_get( 'https://cdn.api.twitter.com/1/urls/count.json?url=' . urlencode( get_permalink( $post_id ) ), array(

		'sslverify' => false,
		'compress' => true,
		'timeout' => 1

	) ) );
Тут я вообще не понимаю, в чем проблема и как исправить. У других соцсетей аналогичные запросы, но со своими урлами. Если убрать запрос к твиттеру, то все ок. Может есть какие мысли?

zevilz ★★★
() автор топика
Ответ на: комментарий от zevilz

Посмотри внутрь функций wp_remote_retrieve_body и wp_remote_get на предмет вызова функций какого-то пхпшного екстеншена. Скорее всего там будет curl, в нем наверное и проблема. Может помочь апгрейд этого екстеншена или самого libcurl или что там.

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

В других соцсетях используются те же функции и отличия только в урлах в wp_remote_get().

zevilz ★★★
() автор топика
Ответ на: комментарий от zevilz

Server not found
Firefox can't find the server at cdn.api.twitter.com.

Вот предположение. Возможно, вордпресс просто хреново обрабатывает ошибки.

thesis ★★★★★
()
Ответ на: комментарий от thesis

Возможно. Не стал разбираться и выкинул этот счетчик лайков.

zevilz ★★★
() автор топика

По списку: 0)nginx собран или из репозитория? Модули какие стоят? Узнать можно командой nginx -V 1)worker_processes 4 под железо или от балды? 2)timer_resolution 100ms смысл? 2.5) В секции events, после worker_connections, добавить multi_accept on 3)блок ssl что делает в основном конфиге? 4)gzip_comp_level 6 выше 3 избыточно, лишняя нагрузка на цп. Обсуждалось не раз, с тестами.

Финал. Конфиг хоста не верен. Кеширования статики нет. Параметры работы fastcgi не заданы. Реврайт косой кривой...

nite2kk8
()
Ответ на: комментарий от nite2kk8

0) из репов dotdeb
1) под железо
3) он там был по дефолту
4) не замечал разницы, нагрузка маленькая
Кэширование статики в хостах.

zevilz ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.