Прежде всего, я уже искал ошибку 502 в Stackoverflow. Потоков много, но на этот раз разница в том, что ошибка появляется без шаблона, а не в Ubuntu.
Все работает отлично, но примерно раз в неделю мой сайт показывает: 502 Неверный шлюз.
После этой первой ошибки каждое соединение начинает показывать это сообщение. Перезапуск MySQL + PHP-FPM + Nginx + Varnish не работает.
Мне нужно клонировать этот экземпляр и создать еще один, чтобы снова запустить мой сайт (он размещен в Amazon EC2).
В Журнал Nginx это показывает эти строки снова и снова:
[error] 16773#0: *7034 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 127.0.0.1
В журнале MySQL или Varnish ничего нет. Но в PHP-FPM это показывает тезисный тип линии:
WARNING: [pool www] child 18978, script '/var/www/mysite.com/index.php' (request: "GET /index.php") executing too slow (10.303579 sec), logging
WARNING: [pool www] child 18978, script '/var/www/mysite.com/index.php' (request: "GET /index.php") execution timed out (16.971086 sec), terminating
внутри PHP-FPM slowlog это показывало:
[pool www] pid 20401
script_filename = /var/www/mysite.com/index.php
w3_require_once() /var/www/mysite.com/wp-content/plugins/w3-total-cache/inc/define.php:1478
(Внутри файла «define.php» в строке номера 1478 он имеет следующую строку кода: require_once $ path;)
Я думал, что проблема была с плагином W3 Total Cache. Поэтому я удалил W3 Total Cache.
Примерно через 5 дней это случилось снова с этой ошибкой в PHP-FPM медленный журнал:
script_filename = /var/www/mysite.com/index.php
wpcf7_load_modules() /var/www/mysite.com/wp-content/plugins/contact-form-7/includes/functions.php:283
(Внутри файла «functions.php» в строке номер 283 он имеет следующую строку кода: include_once $ file;)
На днях первая ошибка произошла в другой части:
script_filename = /var/www/mysite.com/wp-cron.php
curl_exec() /var/www/mysite.com/wp-includes/class-http.php:1510
И снова другая часть кода:
[pool www] pid 20509
script_filename = /var/www/mysite.com/index.php
mysql_query() /var/www/mysite.com/wp-includes/wp-db.php:1655
Процессор, оперативная память … все стабильно, когда возникает эта ошибка (менее 20% использования).
Я перепробовал все, но ничего не получалось
Это происходило примерно каждую неделю с 5 месяцев назад. Я в отчаянии.
Я дошел до того, что даже поместил Nginx и PHP-FPM в crontab Linux, чтобы каждый день перезапускать эти службы. Но это тоже не сработало.
У кого-нибудь есть предложения, где я могу решить эту проблему? Все поможет!
Сервер:
Amazon c3.large (2 core and 3.75GB RAM)
Linux Amazon Red Hat 4.8.2 64bits
PHP-FPM:
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
listen.mode = 0664
pm = ondemand
pm.max_children = 480
pm.start_servers = 140
pm.min_spare_servers =140
pm.max_spare_servers = 250
pm.max_requests = 50
request_terminate_timeout = 15s
request_slowlog_timeout = 10s
php_admin_flag[log_errors] = on
Nginx:
worker_processes 2;
events {
worker_connections 2048;
multi_accept on;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
types_hash_max_size 2048;
server_tokens off;
client_max_body_size 8m;
reset_timedout_connection on;
index index.php index.html index.htm;
keepalive_timeout 1;
proxy_connect_timeout 30s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
fastcgi_send_timeout 30s;
fastcgi_read_timeout 30s;
listen 127.0.0.1:8080;
location ~ .php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_keep_conn on;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param HTTP_HOST $host;
}
}
Я бы начал с настройки некоторых параметров конфигурации.
Я думаю, что ваши значения pm немного отстают, немного выше, чем я обычно видел, настроенные на сервере в соответствии с вашими спецификациями … но вы говорите, что потребление памяти это нормально, так что это немного странно.
Во всяком случае … для pm.max_children = 480
Если учесть, что по умолчанию WordPress увеличивает лимит памяти до 40 МБ, вам придется использовать до 18 гигабайт памяти, так что вы определенно хотели бы уменьшить его.
Проверьте четвертую часть этого поста для получения дополнительной информации об этом: http://www.if-not-true-then-false.com/2011/nginx-and-php-fpm-configuration-and-optimizing-tips-and-tricks/
Если вы используете … скажем, 512 МБ для nginx, MySQL, Varnish и других сервисов, у вас будет около 3328 МБ для php-fpm …, разделенных на 40 МБ на процесс, pm.max_children
должно быть около 80 … но даже 80 это очень высоко.
Вполне вероятно, что вы также можете снизить значения pm.start_servers
, pm.min_spare_servers
а также pm.max_spare_servers
, Я предпочитаю держать их низкими и только увеличивать их необходимо
За pm.max_requests
вы должны оставить значение по умолчанию 500, чтобы избежать появления сервера. Я думаю, что рекомендуется снижать его, только если вы подозреваете утечки памяти.
+ Изменить keepalive_timeout
до 60, чтобы лучше использовать сохранить в живых.
Кроме этого, я думаю, что все выглядит нормально.
У меня была эта проблема с Ubuntu, но request_terminate_timeout
на PHP-FPM и fastcgi_send_timeout
+ fastcgi_read_timeout
было достаточно, чтобы избавиться от этого.
Я надеюсь, что вы можете это исправить!
Других решений пока нет …